К списку категорий

  •   Практическое введение в профессиональную разработку.




  •   Описание

    Инструкция к статье. Сергей Осадчий и ребята, которые обучают себя профессиональной разработке. Это статья руководство к действию на ближайшие 40-60 дней. Она написана в том числе благодаря исследовательской работе Сергея Осадчего, так как сразу видны ошибки и над чем работать.

     

     



      Статья

    Инструкция к статье. Сергей Осадчий и ребята, которые обучают себя профессиональной разработке. Это статья руководство к действию на ближайшие 40-60 дней. Она написана в том числе благодаря исследовательской работе Сергея Осадчего, так как сразу видны ошибки и над чем работать.

    Я вас попрошу её прочитать несколько раз за несколько дней, так как с каждым чтением вы должны лучше понимать, что вам следует делать. В этой статье описаны одни и те же вещи более 3-х раз под разными углами зрения и вам важно понять суть, она заключается в том, каковы ваши действия. Как программиста при планировании и начальном написании проекта.

     

    Что будет сделано в школе. Я знаю. Что статья пока сложновато, но я сделаю дальше так. Что все это разложим в уроках на простые кусочки, тем не менее эта статья важна, так как даёт направление и точное понимание. То есть вы понимаете главное зачем вам это делать, а это и есть знание что делать, потому что как это уже проще, тупо берём дальше и тренируем.

     

    Именно для новичков. Читать в конце статьи, там заголовок:

    ***Для новичков, кто только начинает изучать язык, читайте эту справку о школе и будет понятно с чего начать. Так как до понимания этой статьи вы придёте позже у вас другие заботы сейчас.***

     

     

     

    Сергей.

     

    Сейчас вы делаете очень все верно.

    Сергей Вы огромнейший молодец, просто огромнейший.

     

    Я понял, какое видео записать. Оно будет сегодня.

     

    Вы сейчас делаете то что и должен делать программист, ПРИНИМАЕТЕ РЕШЕНИЕ ЧТО У ВАС БУДЕТ В МИКСИНАХ, ЧТО В ДЕКОРАТОРАХ.

    Это и есть главная проблема в программировании при обучении.

     

    Я видел, что теоретически вы все понимаете и на лету все рассказываете.

    Но так же я понимал, что вы и другие ребята, которые делают с вами вместе и стараются начать разрабатывать будут испытывать трудности и я их испытывал долгое время, в принятии решения. где и что должно работать.

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

     

    Я напишу видео и внесу ясности в эти моменты.

     

    Но я повторяю, Вы огромный молодец, так как я последнее время вам постоянно говорил, что: - "Сергей пишите осмысленные маленькие куски кода, иначе дальше движения не будет".

     

    Теперь важное. Серёж, смотрите сейчас пока не важно где вы поставите декоратор, а где миксин, даже если это будет на данном этапе противоречить всей логике, но работать, значит уже круто.

     

    Технику доберём позже у Кита, (https://beeware.org/

    https://github.com/freakboy3742

    И все ребята кто с ним пишет можно брать их технику.

     

    Сейчас вы сделали очень важный шаг, начали писать осмысленные куски кода, поэтому говорю тысячу раз молодец.

    Можно было уже начать писать наш проект, но это было бы не верно.

     

    Теперь пожалуйста прочтите внимательно следующее, что ниже и прошу вас принять это к действию.

     

    Сергей, так как вы сейчас двигаетесь - это очень быстро, поверьте мне пожалуйста.

    Очень важно ближайший месяц мы будем заниматься, только миксинами и декораторами и довести это нужно до профессионального уровня.

    Что бы написание декоратора или миксина было на лету.

    Потом позже вы много чего будете добавлять, но добавлять нужно на то что уже усвоено профессионально.

     

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

    Но как это делать правильно я понял примерно 2-3 года назад.

    До этого несколько лет я старался делать все и разам и ничего не выходило.

    Но когда я понял, что разработчик обязан определить что и на чём он будет писать. Я перечитал кучу книг, но нигде не видел, изложения в формате обращения внимание на мелочи чему то учится в разработке.

    В книгах в основном было так.... напишите этот код он делает то то и то то и так далее. Сами это знаете.

     

     

    И наконец, я нашёл для себя правильный вопрос, везде изложено как делается то или другое.

    Но мне важна была сама техника обучения разработке, я подумал, если я сам пойму, тогда я смогу объяснить.

    Ответ пришёл сам собой, когда я был готов. Об этом я уже вам говорил.

    Потом стал другой вопрос, от чего отталкиваться?

     

    Я часто залазил в нутро джанго, когда были ошибки, правил библиотеки ссли они не работали и как то залез в нутро библиотек машинного обучения и меня осенило, что все библиотеки внутри имеют свой стиль.

    Потом я вам это показал уже налету, помните, Pandas написана на миксинах, Джанго на мета классах и так далее.

     

    Я понял, что нет лучшего места, чем школа, где эту технику можно выработать.

     

    Тогда ещё два года назад мне стало понятно, как обучить программиста разработке.

     

    Но пока никто не спешил разрабатывать, а ведь это просто и интересно и главное реально просто, если обратить внимание  обучаемого на сами принципы разработки.

     

    Итак первый принцип, к которому мы пришли - это Программист обязан определить способы реализации продукта (скажу их много, но в дебри лезть не будем все по шагам.)

     

    Вы здесь сами убедились на своём опыте, что код не ладится без этого.

     

    Но прежде чем понять способы нужно понять принципы.

     

    А сам принцип и заключается в том, что разработчик обязан определить способ/ы реализации продукта.

     

    Пометка(что связывает руки). Ребятам, которые впервые читают об этом искусстве разрабатывать поясню Мы говорим о разработке с нуля, приложения, фреймворка или другого продукта.

    Для чего нам нужны эти знания? Что бы свободно писать масштабируемые приложения, которые будут иметь логику например на питон, веб на Джанго и мобильную часть на котлин и при этом решать одну задачу.

    Но здесь есть одна важнейшая деталь. Тот кто начинает изучать технику написания кода, получает очень глубокое понимание языка. мало того он получает само истинное понимание что и зачем делать.

    И вот он важнейший вывод. Что тогда это знания начинает очень сильно влиять и на написание готовых техник, например Джанго. Да там все определено что и как делать, но все равно и там хоть все готово,

    но программист должен и там принять решение на чём и как писать.

    Тогда будут рождать Инстаграмы и причём легко на лету..

     

    Теперь, Сергей, я вам немного поясню. Ребята я обращаюсь к Сергею, мне так проще, так он делает немного больше, но каждый воспринимайте. что я обращаюсь к вам лично.

     

    Вот смотрите Сергей (для меня пометка  - показать в видео).

    Когда вы освоите твёрдо миксины и декораторы

     

    (вставим для примера  pyramid тоже мощный фреймфорк его вся основа одни дектораторы

    https://ru.wikipedia.org/wiki/Pyramid_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D1%8B%D0%B9_%D0%BA%D0%B0%D1%80%D0%BA%D0%B0%D1%81)

    https://trypyramid.com/

    То есть, как видите когда нужны каркасы, то декораторы необходимы.

    А миксины помогут реализовать абсолютно любую логику. (повторяю любую)

    На самом деле Сергей, люди очень много разрабатывают

    https://python-scripts.com/web-frameworks

     

    Но я ценю джанго, потому что там все стыкуется с иголочки и с версии 3 он станет полностью асинхронным.

     

    Теперь к нашему вопросу о знаниях которые нужны будут именно вам.

     

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

    Важно. Сейчас вам код не важен, важно понять что вообще происходит, на практике все проще.

    У вас стоит задача изменить тип выходных данных, а именно нужен асинхронный подход с применением json, вы пишете декоратор и ваши данные

    а) во -первых понимаются тем же джанго и загружаются в таблицу

    б) в момент приёма и передачи. непосредственно в сам момент данные обрабатываются получается когда данные входят они есть данные json они превращаются в питон понятные данные. а когда выходят они превращаются в json формат.

    г) зачем нам декоратор, например в этом случае с применением json? Мы берём JQuery, в котором знаем, что встроен Ajax (асинхронный обмен данными с сервером), при этом мы знаем что Ajax с коробки работает с Json, а наше представление его и так преобразует.

    Мы пишем декоратор для Ajax и вот теперь наше представление стыкуется с JQuery, реализация простая обычный словарь питон.

    Потом ключ этот вставляем в html где код JQyery и указываем что будет работать Ajax, все дело сделано.

    Теперь можем писать что угодно и все будет происходить без перезагрузки страницы.

     

    И мы это реально делали, когда писали комментарии. как в vk, вот в этом курсе

    http://python-tut.ru/course/subject/social/

     

    По сути дела поняв один раз, мы можем писать любое приложение. (это один из самых простых подходов, хотя по объяснению сейчас кажется сложным)

    Посему Сергей, вам важно было сейчас понять, использование декоратора на лету.

    В результате в джанго мы получили следующее.

    Наше представление работает с базой средствами джанго, то есть все надёжно.

    На выходе оно делает одну вещь данные превращает в Json

     

    JsonResponse

     

    И соотвественно принимает json и превращает в формат понятный для питон джанго.

    Ну а мы ещё добавили свой декоратор, что бы состыковать с JQuery (так как заранее знали что JQyery работает с Ajax, а так же знаем, что сам Ajax работает с коробки с форматом json.

     

    вот это представление

    from django.http import HttpResponse, JsonResponse, HttpResponseRedirect

    from django.views.decorators.http import require_POST

     

    @ajax_required

    @login_required

    @require_POST

    def image_like(request):

    image_id = request.POST.get('id')

    action = request.POST.get('action')

    if image_id and action:

    try:

    image = Image.objects.get(id=image_id)

    if action == 'like':

    image.users_like.add(request.user)

    #create_action добавит в ленту, что пользователь лайкнул

    create_action(request.user, 'likes', image)

    else:

    image.users_like.remove(request.user)

    return JsonResponse({'status':'ok'})

    except:

    pass

    return JsonResponse({'status':'ko'})

     

    Заметьте котлин ведь тоже полностью имеет встроенную поддержку JS и само собой json

    Я вам хотел сказать, что используя декораторы, вы можете добавлять к свои проектам разные реализации типа JQuery или typescript и получать удобство.

    То есть там где важно что бы действия происходили без перезагрузки страницы, но при этом был полноценный обмен данными с сервером, вы можете это иметь.

     

    В общем суть поняли, пока оставим это. (Ещё раз говорю, Jquery? json там все шаблонно, поэтому в своё время поймёте, там мало вариантов, все шаблонно поэтому легко учится и понимается, надо что бы один раз по толку объяснили.

    Для участников школы, перво наперво кто хочет проделать эти уроки

    смыл уловите, а потом легко добрать понимание

    (уровень сложности выше среднего)

    http://python-tut.ru/course/subject/social/

     

    Подводим итог:

     

    По сему сделаем вывод с чего и начали.

     

    Для нас важно выработать шаги при разработке, что должен определять программист.

    А значит делаем вывод, то что он должен определять, это нужно использовать профессионально.

     

    Задача.

    Весь месяц мы занимаемся миксинами и декораторами и доводим написание этих вещей до автоматизма.

    То есть нужно настолько глубоко уяснить, что бы на ходу писать стыковки типа той, которая описана выше или типа той, что описали вы, то есть написать, например декоратор, для Pandas.

     

    Напомню. Мы могли бы начать с мета классов, но считаю это не верным, так как зачем браться за сложное, если есть простое и очень коммуникативное.

    Дойдём до мета классов, но позже.

     

    Мы взяли миксины, а миксины это наследование, иными словами, Сергей. сейчас с вами мы копаем очень глубоко и детально наследование.

    Просто от миксинов более просто будет перейти к более сложным вещам (таким как абстракция и агрегация).

    Заметьте у нас до сих пор висит вопрос абстрактных классов и интерфейсов, в коде не вижу пока уверенности, а без них тоже ничего не напишем.

     

    Сейчас поясню почему важно понимание абстрактных классов. без этого понимания мы не перейдём к более сложным вещам.

     

    Теперь как это выглядит на практике уже в реализованных проектах. Вот Джанго вроде бы шаблон там вбит, модель представление контролёр.

    Только модель осталась и название. А сам джанго давно это перерос.

    То есть разработчики давно освободились от всех догм шаблона и заявили это -  не помню версию, но где с 1.8

    То есть если ранее база была завязана, то потом разработчики отцепили базу от логики, зато теперь, хочешь используй одну базу, потом на лету вторую или вообще без базы.

    А ведь все это было сделано посредством мета классов и абстракции.

    Я пробовал берёж MySql извлекает данные в Json и вбиваешь их в PostgresQl (да есть нюансы)

    Но главное что в чём ценность джанго, он отходит от всех шаблонов и делает каждую часть фреймворка работающей, как отдельно так и стыковать с любыми библиотеками и вариациями.

    Вот к чему нужно и стремится.

     

    Я вам зачем дал шаблоны почитать, что бы уловить саму нить.

    А потом нужно пытаться полностью высвободить приложение.

     

    Я вас это уже говорил, что если мы будем писать наш проект под конкретное предприятие, то у него нет будущего.

    Но если мы пишем абстрактное предприятие, то есть который можно применить и для создания масштабируемого приложения. как заправки, так и завода, то оно будет жить.

     

    Итак учебные цели на месяц или немного больше:

     

    Работаем с миксинами и декораторами. (важно заметите , что все предыдущие знания легко встраиваются, при написании).

     

    Сейчас напоминаю важное.

    Важно за этот месяц изучить камни преткновения.

     

    Декораторы и Миксины.

    1. Укрепить 1 принцип обучения разработке. Программист определяет какую методику реализации кода будет использовать.

    2. Закрепить написание миксинов и декораторов на лету.

    3. Чётко разграничивать в голове для чего использовать миксин. А для чего декоратор.

    Положить понимание на практику и использование и начать работать над выработкой принципов, где и что использовать. Для этого начать осуществлять контроль, посредством.

     

    4. Сделать первые шаги к искусству разработки хороший/плохой код по Линусу.

    5. Как? Брать малое приложение.

    а) видеть общее приложение и его реализацию.

    б) видеть слои кода.

    в) к каждому куску кода (класс, метод, миксин, декоратор) ставить вопрос. А точно ли реализация кода отвечает задаче? Есть ли лишние действия? Максимальную ли скорость я выжал с этого фрагмента? Главное есть ли лишние строчки. Которых можно было бы избежать? Если что то находим, то переписываем.

     

    5. На этом этапе не быть строгим к себе и коду, так как после твёрдого понимания, доработается понимание, где и как это лучше использовать, будем смотреть, где использует эти вещи Кит-Магги. (это даст нам правильный опыт в будущем).

     

    6. Напомню, что мы детально работаем с наследованием (вернее продолжаем работать). И взяли декораторы и миксины, что бы дать нашему коду такие качества, как действия, простое изменение свойств (тоже действия). То есть наш код может стать коммуникабельным и гибким.

     

    7. Зачем мы это делаем? Так как нам нужно глубокое понимание для разработки и профессиональное мышление. (которое мы сможем использовать позже и в готовых библиотеках). Например если мы добавлять эти знания к Джанго разработке, то наши приложения, имею под рукой мощный функционал Джанго + наш профессионализм, мы сможем писать очень сложные вещи и не только в веб, а так же превращать наши вещи в мобильные, но решение будет одной задачи.

     

    8. Не стоит забывать, что миксины нам проще дадут подойти к более сложным вещам таки, как агрегация и абстракция в коде (эти вещи так же не могут существовать без наследования.

     

    По сему мы изучаем наследование, но уже на профессиональном уровне.

     

    9. На практике обучения профессиональной разработки мы с вами приобретаем важные привычки, что бы при чтении технического задания уже в голове чётко определять, что и как мы буем писать. Дальше дело за опытом.

     

    Все получится. Просто следуем в школе за обучением и рекомендациями и делаем в своё темпе.

    Все получится.

     

    ********домашнее задание**********

     

    Сергей Осадчий для вас домашнее задание.

    Вам необходимо сделать следующее, пока я подготовлю другие вопросы.

     

    Напишите небольшую логику. Пусть это будет на ваше усмотрение, но по минимуму несколько шагом. (цех, или малое предприятие или станок или систему прлдукт).

     

    Я вижу вам удобно с Pandas работать. Хотя можете взять чт оугодно, важно распределить в голове эт вещи, сам класс, какое действие опишите миксином. Какое декоратором и увидеть в коде. Когда нужно использовать super.

     

    (что бы помочь вам вспомнить супер, я опишу реальную ситуацию в одном ис своих приложений.

     

    Цель написать и вывести данные посредством Pandas. (объединить в таблицу.)

     

    1. Опишите сам класс.

    2. Опишите дочерний класс.

    3. Напишите два миксина, чётко пропишите что они делают, напишите причину почему вы используете именно миксин и что он делает.

    4. Напишите не менее одного декоратора. (напишите почему вы используете декоратор)

    5. Обязательно примените в одном из кусков кода метод super, я надеюсь вы помните. Что супер выбирает родителя.

    Я знаю. Что задание сложно, Очень важно его сделать, так как вам придётся перебирать причины, где вы будете писать сам класс, где декоратор, а где миксин.

     

    Я так же вас прошу метод super постоянно подтягивать и не забывать его. Если позабыли, то вот вы сами его и описывали здесь, напомните себе:

     

    https://spb-tut.ru/python-oop-docs/oop/magic/

     

    Что бы было проще, я вам напомню суть метода super.

    Мы используем метод super, когда хотим из любого кода, который не важно, где находится использовать только ту часть класса, которая нам нужна, при этом метод супер обеспечивает точно выполнение маленького куска кода. Вы когда то очень точно сказали, метод супер указывает родителя.

    Действие метода супер можно псомотреть в kivy и так же в любом графическом интерфейсе, а вам при логике он как воздух нужен.

     

    В джанго мне нужно было авто заполнение формы то есть slug, но самом поле я не хотел выводить для пользователей, то есать оно скрыто, но должно автозаполянться. Я нашёл хорошую билиотеку

    from pytils.translit import slugify

    def save(self, *args, **kwargs):

    if not self.id:

    # Newly created object, so set slug

    self.slug = slugify(self.title)

     

    super(Course, self).save(*args, **kwargs)

     

    И у меня получилось, что дажнго сама себе. Библиотека putils имеет много классов , но мне нужно что бы из всеё библиотеки отработал только один метод, я пометил его для себя как super, это дало мне возможность, в джанго формах заполнить slug автоматом. То есть при помощи метода супер, я могу использовать часть любого кода, при чём для выполнения любой части кода, при этом мне нужно бояться, что классы выдадут ошибку. Вот и я хочу, что бы вы взглянули на kivy и чуть что написали отдельно класс с методом в Pandas и потом в другом классе применили его.

     

    Сергей важно. Мы с вами этот месяц будем твёрдо усваивать, миксины и декораторы и это задание важно выявить узкие места. Но не стоит забывать про базовые вещи super, магические методы с двумя нижними подчёркиваниями и типы данных и всегда помнить, а может кто уже описал. То есть программист должен быть собран всегда. И ваш код из них то и состоит.

     

     

     

     

     

    ********Конец домашнее задание**********

     

     

     

     

    *****для новичков*********

     

    Для новичков, кто только начинает изучать язык, читайте эту справку о школе и будет понятно с чего начать.

     

    Для тех кто начал с этой статьи и ещё новичок. Для вас эта статья сложная и много не понятного. Это нормально.

     

    Вот из себя начала представлять школа программирования Бовсуновского с конца 2018 года.

     

    Для того, что бы было понятно, напишу. Как было ранее и как теперь.

     

    Когда я начинал школу, то цель ей была дать людям, которые в своё время по разным причинам не закончили университетов по IT, писать код, обратите внимание на фразу писать код, ранее было именно так. И если у этих ребят, постоянно в голове бродила мысль, хочу программировать, но при этом было много вопросов о выборе языка, а как научится и многое другое.

     

    Вот письмо одно из полсдених: от Виктора:

    Очаровательный Python 3 - начало полного курса изучения. (бесплатно)

    опять ОТЛИЧНЫЙ!!! ОТЛИЧНЫЙ!!! ОТЛИЧНЫЙ!!!  -ОТЛИЧНО! рассказываете как раз для меня ****** старого.

    Не зря говорите что даже 8 летние могут выучить. 

    Дохожу до 6 курса, а там слышу -заходим в нашу уже скаченную среду винг ИДЕ. Хм .. Что это такое? 

    Наверное что то где то пропустил. Опять старого на другой перон занесло.

    Стоишь как у разбитого моста и не знаешь как переправится.  И опят в лес или в город искать -где проскочил.

     

    Могли бы вы мне подрят написать ссылки 1-2-3-4-5 и так далее в цепочку? Что бы я ни чего не пропустил, в сторону не ушёл, а учил уже как надо.

    Буду за это вам благодарен. А то прыгаю туда сюда в одни и те же уроки и ролики.


     

    Валерий.

    То есть вижу, ещё много для новичков нужно подправить.

    Но на самом деле это спешка, потому что нужно научится вдумчиво читать мои письма, не пробегать бегом, для общего понимания, а понимать буквально и читать и смотреть все ролики. Которые даю. Это Виктору и другим ребятам поправить нужно.


     

    Вот быстрые рекомендации, пример:

    https://vk.com/spb_tut?w=wall180926159_816


     

    Или вот истории, прочтите там истории трёх ребят, важно:

    https://spb-tut.ru/advanced_python_learning/successful-programming-examples/


     

    Проблема начинается, когда даю видео, но ученик не смотрит полностью и главное после видео не составляет свой личный план и своё понимание.

    Вот например видео об изучении двух языков и как язык вообще учится, очень простым языком.

    https://www.youtube.com/watch?v=R6RO8UKspZY

    А я всегда говорю, вы должны чётко понимать, как вы будете взаимодействовать со школой, тогда изучение очень эффективно.

    Но вернём теперь к основному объяснению.

    Итак первый этап школы был писать код и обучение с нуля. (есть).

    Второй этап было развитие навыков. (есть. Здесь мы пишем код, работаем с разными инструментами, начинаем изучать другие языки, погружаемся в ООП, написать первые приложения и программы, по сути дела на этом этапе обучаемый должен выработать привычки, вот здесь о них. Посему кто упустил, рекомендую исправить.

    https://www.youtube.com/watch?v=Br4_muO_3R8&t=1211s


     

    С 2018 года школа немного изменилась.

    Теперь в школе будет:

    подготовка с нуля. (была, есть и будет развиваться.)

    развитие (была, есть и будет развиваться.)

    обучение профессиональной разработке.(началась с конца 2018 года).

    То есть школа в 2019 году будет сильно меняться и теперь будет полный процесс в одной школе.

    Есть чёткая цель.

    Обучаемый должен уметь на выходе создать сложную логику на любом языке (мы берём пайтон и котлин + Js (его производные). Разместить это приложение в веб, то есть обеспечить серверную часть и что нужно разместить в мобильном сегменте. И все это уметь состыковать и заставить работать, как единый организм. При этом в основу закладываем написание абстракций и их прототипов, что бы одни и те же вещи можно было использовать и для заправки и для предприятия и для магазина.

    Для новичков начать здесь:

    https://spb-tut.ru/info/action/

    И обязательно получить доступ котлин

    http://kotlinlang.spb-tut.ru/buy/account/


     

    Что бы ответить себе зачем, посмотреть это:

    https://www.youtube.com/watch?v=R6RO8UKspZY

    Если вы сомневаетесь в своих силах, то напрасно, просто возьмиет и делайте.

    Вот таким пришёл Сергей Осадчий, который уже осваивает разработку

    https://spb-tut.ru/index_all/?page=375

    и вот вам даст простые ответы

    Как стать программистом Python? Моя история в ответах на частые вопросы новичков.


     

    https://www.youtube.com/watch?v=fCAMwyHtT7s&feature=emb_logo


     

    Спасибо за доверие, все получится.


     



      Код

    нет кода

      Рекомендации

    Узнать больше в ленте Twitter и подписаться на Ютуб, получать новые видео.



    Для новичков начать здесь:

    https://spb-tut.ru/info/action/

    И обязательно получить доступ котлин

    http://kotlinlang.spb-tut.ru/buy/account/

     



    2020-01-16 18:41:44+00:00



    К списку категорий