Схема питона для жгута из бисера


Жгут из бисера "Змея". Мастер-класс и схемы плетения

Всё новое это хорошо забытое старое.  Данная пословица актуальна и в наше время, потому что в моду вернулись изделия ручной работы, но слегка видоизмененной, усложненной формы и конструкции. Хорошо знакомые браслетики из бисера превратились в настоящие элементы женского гардероба – жгуты из бисера. Данная статья актуальна не только для поклонников бисероплетения, но и для начинающих. Узнаем, как делать жгут из бисера «Змея» – схема нам поможет в этом.

Подготовительные работы

Для начала нам необходимо определиться со способом плетения. Жгуты бывают толстые и тонкие. Тонкие, с которых лучше всего начинать учиться вязать, плетут полустолбиком (от 6 до 12 бисеринок), а толстые (диаметр которых от 13 до 30 бусин) – столбиком. У метода «столбиком» есть две разновидности:

  • без накида;
  • с накидом (русский способ).

Отличается вязание столбиком и полустолбиком по рисунку:

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

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

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

Как читать схему:

  1. Жгут тонкий, ряд состоит из 7 бусинок. Эту информацию можно найти на схеме (справа сверху): circumference (ширина жгута).
  2. Цикличность или повтор узора указан ниже в описании: repeat of colors. Например, 140 штук составляет раппорт (можно встретить как раппорт – часть рисунка, который повторяется).
  3. Столбцы. На схеме указано три столбца, которые могут сбивать с толку, но все просто:
  • Draft – изображение жгута, если его развернуть;
  • Corrected – мозаичное изображение плетеного узора;
  • Simulation – вид будущего готового аксессуара.
  1. Начало и конец плетения отмечено слева от узора отметками (10, 20…40). Шаг в 10 можно считать раппортом.
  2. Набор бусин расположен справа от самого узора, в виде вертикальных клеток с соответствующим цветом бисеринки. Двигаемся сверху вниз. Цифра возле квадрата, символизирующего бисеринку, указывает на количество бусин при наборе.

Если не совсем ясен принцип набора, то можно обратиться к Draft. Тут, как и в вышивании, продвигаемся справа налево, то есть, направление плетения начинается по первой нижней строке справа. Браслет «Змея» из бисера делается очень просто, его схема представлена ниже.

Инструменты и материалы

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

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

Общий набор инструментов:

  1. Бисер. Из всех производителей (Китай, Япония, Чехия, Россия, Индия, Тайвань) лучшим соотношением цена-качество отвечает именно чешский. Он умеренный по ценовой политике, бисеринки с четкими и ровными гранями, существует очень широкий ассортимент, пользуется большой популярностью, но от партии к партии цветовые оттенки различаются.

Не надо стараться сэкономить, дешевый бисер:

  • не калиброван и рисунок будет нечетким;
  • ломкий – в жгуте или во время носки разорвется;
  • краска вымывается, окисляется на воздухе.
Китайский бисер
  • 2. Нить для вязания. Можно взять пряжу (толщиной 500-800 м на 100г). Поскольку ее будет видно в готовом изделии (при вязании полустолбиком), цвет должен соответствовать основному виду бисера.

Также используют джинсовые нити, но они довольно тонкие, что может отразиться на целостности жгута «Змея» из бисера.

Из жгута по схеме можно сделать браслет или ожерелье.
Как вариант, допустимо применение лески или обычного клубка ниток (например, «Ирис»).

Выбор остается за мастером и прочностью материала.

  1. Крючок. Лучше выбирать в зависимости от пряжи. Ориентировочно крючок 0,6 мм — 1,2 мм.
  2. Иголка для бисера. Её размер должен соответствовать внутреннему диаметру бисеринки. Жгут или браслет из бисера «Змея» хорошо получается из бусинок №11.
  3. Для закрепления бисера и всего изделия: колпачки (обниматель), каллот, пины, колечки, застежка.

Набор материалов и инструментов варьируется в зависимости от изделия. Браслет «Змейка» из бисера не потребует больших затрат бусин или нитей.

Подбираем цветовую гамму

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

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

  • Монохромный – один цвет.

Один цвет представлен в изделии всевозможными оттенками (белый, серый, золотистый). Но не надо рядом ставить оттенки, близкие между собой, – соблюдайте контраст: от темного к светлому. Такое колье или браслет не бросается в глаза, но удачно гармонирует с общим образом (при правильном подборе цветовых оттенков).

Существуют родственные цвета, которые хорошо дополняют и балансируют друг друга, например, красный с розовым и фиолетовым, с оранжевым и светло-желтым; зеленый с лаймовым и салатовым, с синим и морской волной и так далее. Браслет «Змея» из бисера по схеме таких оттенков будет гармонично подходить к летнему образу.

Судя по названию, ясно: цвета, которые противоположны друг другу. Но не надо обольщаться, тут также важно соблюдать правила. Каждому цвету на палитре принадлежит именно свой антипод. Бездумное сопоставление цветов испортит картинку. Например, зеленый – это антипод красному, желтый – сиреневому. Такой браслетик с вязаным узором подойдет экстравагантным женщинам или детям.

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

Схемы: 5 популярных техник в стиле змеи

Схемы жгута из бисера «Змея» очень различны. Самые популярные из них:

  1. Королевская змея (диаметр 10, 8 и 6 бисеринок).
    На 6 бисирин На 8 бисирин
  2. Схема на 16 бисеринок «Гадюка». У нее ярко выраженная голова и рисунок кожи.
  3. Жгут из бисера и бусинок «Змеиная кожа». Схема Готовый Вариант
  4. Молочная змея. Видео-урок можно найти на многих ресурсах.
  5. Питон. Такое плетение больше подходит для крупного толстого жгута, принт хорошо смотрится на широкой основе.
    Схема Готовый Вариант

Пошаговый мастер-класс по плетению жгута

На примере конкретного изделия расскажем, как плести жгут «Королева змей».

Подготовка материалов согласно схеме.

  1. Нанизывание бисера на нитку. Если только учитесь, то не стоит делать слишком длинную заготовку, для остальных – длина ориентировочно 1,5 м.
  2. С помощью крючка и пряжи делается первая петелька и еще пять воздушных петель
  3. Объединение полученных пяти петель столбиком без накида. Теперь по нитке придвигаем бисеринку (к первой петле).
  4. Вяжем столбиком без накида петельку №1 после бисеринки.
  5. Продвигаем следующую бисеринку по нитке и провязываем после нее столбик без накида.
  6. Повторяем операции до пятой бисеринки (первый ряд).
  7. Повторяем предыдущие операции по спирали таким образом, чтобы шестая бисеринка находилась над первой, седьмая – над второй и так далее. Провязываем желаемой длины. Для расширения можно постепенно (к примеру, каждые 3 см) увеличивать жгут на одну бусину.

  8. Далее делается голова змеи в виде мозаичного плетения. Глаза выполнить из бусин крупного размера.

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

Не бойтесь экспериментов.

Видео Урок

Наши рекомендации

Советы специалистов помогут вам освоить технику бисероплетения:

  1. Нанизывание бисера – процесс кропотливый и требует повышенного внимания, поэтому некоторые мастера записывают на диктофон порядок бусин.
  2. Набирать бисер на пряжу затруднительно, поэтому вместе с ней продевается шелковая нить, которая увеличит скольжение бисеринок, один ее конец закрепляется с концом пряжи.
  3. Чтобы рассчитать длину будущего браслета или колье, достаточно пользоваться пропорцией:

5 рядов при бисере №10 – это 1 см.

Если рядов (раппорт) – 27 шт., значит: (27 шт.× 1см)/5 шт. = 5,4 см.

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

Главное: всегда делать раппорты целые, не оставлять на половине.

  1. Не забывайте следить за плотностью жгута при плетении. Изделие должно быть тугое и однородное.

Следуя советам, вы освоите много техник и сможете делать самостоятельно настоящие украшения.

ИСТОЧНИКИ:
http://vse-rukotvorchestvo.blogspot.com/2013/01/blog-post_8421.html
https://postila.ru/post/15034571
http://nintthrees.appspot.com/shema-zhguta-iz-bisera-zmeya.html
http://www.svoimi-rukamy.com/chteniye-shem-shnurov-iz-bisera.html
https://itsmy.art/world/artbiser/biseropletenie/masterklass-zmeazgut-iz-bi-5192

ДИАГРАММА ВЕННА - Галерея графиков Python

Диаграмма Венна (также называемая первичной диаграммой , диаграммой наборов или логической диаграммой ) - это диаграмма, которая показывает все возможных логических отношений между конечным набором различных наборов. Каждый набор представлен кружком.

Размер круга

представляет важность группы. Группы обычно перекрываются: размер перекрытия представляет собой пересечение между обеими группами.Не рекомендуется строить диаграмму Венна с числом более 3

.

групп, потому что их будет трудно читать. В python диаграмма Венна реализована с использованием функций venn2 и venn3 библиотеки matplotlib в соответствии с номером вашей группы. См. Здесь для установки модуля.

  • Матплотлиб

    связанные

    .

    основ диаграмм Санки с Python's Plotly | автор: Тьяго Карвалью

    Пример использования

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

    Бюджет Ванкувера на 2020 г., стр. 6

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

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

    Нарисовано с помощью sketch.io

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

     source = [0, 0, 0, 0, # Op Expeditures 
    1, 1, # Public Safety
    2, 2, # Eng n Util
    3, 3, 3, 3, 3, 3, # Community Serv
    4, 4, 4] # Corp Supporttarget = [1, 2, 3, 4,
    5, 6,
    7, 8,
    9, 10, 11, 12, 13, 14,
    15, 16, 17] значение = [484500, 468350, 355300, 306850,
    339150, 145350,
    371450, 96900,
    129200, 80750, 48450, 48450, 32300, 16150,
    113050, 129200, 64600]

    Давайте также определим метки для узлов .

     label = [«Экспедиторские операции», 
    «Общественная безопасность»,
    «Инженерные и коммунальные службы»,
    «Услуги, связанные с общественностью»,
    «Корпоративная поддержка»,
    «Полиция»,
    «Пожарная безопасность»,
    «Утилиты »,
    « Инженерные общественные работы »,
    « Парки и зоны отдыха »,
    « Искусство, культура и общественные услуги »,
    « Библиотека »,
    « Развитие, строительство и лицензирование »,
    « Планирование, городской дизайн и Устойчивое развитие »,
    « Прочие »,
    « Корпоративная поддержка »,
    « Долг и капитал (некоммунальные) »,
    « Непредвиденные обстоятельства и переводы »]

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

    .

    mingrammer / diagrams: Diagram as Code for прототипирование архитектур облачных систем

    перейти к содержанию Зарегистрироваться
    • Почему именно GitHub? Особенности →
      • Обзор кода
      • Управление проектами
      • Интеграции
      • Действия
      • Пакеты
      • Безопасность
      • Управление командой
      • Хостинг
      • мобильный
      • Истории клиентов →
      • Безопасность →
    • Команда
    .

    Подгонка базовых кривых научных данных с помощью Python | by Naveen Venkatesan

    Базовое руководство по использованию Python для подгонки нелинейных функций к экспериментальным точкам данных

    Фото Криса Ливерани на Unsplash

    Помимо построения точек данных из наших экспериментов, мы часто должны подгонять их к теоретической модели для извлечения важные параметры. Эта короткая статья послужит руководством о том, как подогнать набор точек к известному уравнению модели, что мы сделаем с помощью scipy.optimize.curve_fit функция. Основы построения графиков данных в Python для научных публикаций можно найти в моей предыдущей статье здесь. Я рассмотрю три типа общих нелинейных аппроксимаций: (1) экспоненциальный, (2) степенной и (3) гауссовский пик.

    Чтобы использовать функцию curve_fit , мы используем следующий оператор import :

     # Импортировать пакет подгонки кривой из scipy 
    из scipy.optimize import curve_fit

    В этом случае мы используем только одну конкретную функцию из Пакет scipy , поэтому мы можем напрямую импортировать только curve_fit .

    Допустим, у нас есть общая экспоненциальная функция следующей формы, и мы знаем, что это выражение соответствует нашим данным (где a и b - константы, которые мы подходим):

    Общая экспоненциальная функция

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

     # Функция для вычисления экспоненты с константами a и b 
    def exponential (x, a, b):
    return a * np.exp (b * x)

    Мы начнем с создания «фиктивного» набора данных для соответствия с этой функцией.Чтобы сгенерировать набор точек для наших значений x , которые равномерно распределены в указанном интервале, мы можем использовать функцию np.linspace .

     # Сгенерировать фиктивный набор данных 
    x_dummy = np.linspace (start = 5, stop = 15, num = 50)

    start - начальное значение нашей последовательности

    stop - конечное значение нашей последовательности (будет включать это значение, если вы не укажете дополнительный аргумент endpoint = False )

    num - количество точек, на которые нужно разделить интервал (по умолчанию 50 )

    Обратите внимание, что вам не нужно явно записывать имена входов - нп.linspace (-5, 5, 100) также действителен, но для целей этой статьи он упрощает понимание.

    Для нашего фиктивного набора данных мы установим для обоих значений a и b значение 0,5.

     # Вычислить значения y на основе фиктивных значений x 
    y_dummy = exponential (x_dummy, 0.5, 0.5)

    Чтобы убедиться, что наш набор данных не идеален, мы добавим некоторый шум в наши данные, используя np.random. нормальный , который извлекает случайное число из нормального (гауссовского) распределения.Затем мы умножим это случайное значение на скалярный коэффициент (в данном случае 5), чтобы увеличить количество шума:

     # Добавить шум из распределения Гаусса 
    noise = 5 * np.random.normal (size = y_dummy.size)
    y_dummy = y_dummy + noise

    size - форма выходного массива случайных чисел (в данном случае такая же, как размер y_dummy )

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

     # Построить зашумленные экспоненциальные данные 
    ax.scatter (x_dummy, y_dummy, s = 20, color = '# 00b3b3', label = 'Data')

    s - размер маркера в единицах (точках) ² , поэтому размер маркера удваивается при четырехкратном увеличении этого значения

    График рассеяния фиктивных экспоненциальных данных с добавленным гауссовым шумом

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

     # Установите масштабирование оси Y на логарифмическое 
    ax.set_yscale ('log')

    Теперь мы также должны установить нижний предел оси Y должен быть больше нуля из-за асимптоты в функции логарифма. Кроме того, для отметок мы теперь будем использовать функцию LogLocator :

     # Установить отметки по оси Y 
    ax.yaxis.set_major_locator (mpl.ticker.LogLocator (base = 10.0)) # Установить пределы оси Y
    топор.set_ylim (0.1, 1000)

    base - основание для использования для основных делений логарифмической оси

    График рассеяния фиктивных экспоненциальных данных с логарифмической осью y

    Теперь мы можем подогнать наши данные к общей экспоненциальной функции, чтобы извлеките параметры a и b и наложите соответствие на данные. Обратите внимание, что хотя мы представили полулогарифмический график выше, мы фактически не изменили на данные y - мы изменили только масштаб оси y .Итак, мы все еще подбираем нелинейные данные, что обычно лучше, поскольку линеаризация данных перед подгонкой может изменить остатки и дисперсии подбора.

     # Установите фиктивные экспоненциальные данные, cov = curve_fit (f = exponential, xdata = x_dummy, ydata = y_dummy, p0 = [0, 0], bounds = (- np.inf, np.inf)) 

    Входные данные

    f - функция, используемая для подгонки (в данном случае экспонента )

    xdata - массив x-данных для подгонки

    ydata - массив y-данных для подгонки

    p0 - массив начальных предположений для подгоночных параметров ( a и b как 0)

    границ - границ параметров (от -∞ до ∞)

    Выходы

    pars - массив параметры из подгонки (в данном случае [a, b] )

    cov - оценочная ковариация pars , которая может использоваться для определения стандартных отклонений подгоночных параметров (квадратные корни из диагоналей)

    Мы можем извлечь параметры и их стандарт отклонений от выходных данных curve_fit , и вычислить остатки путем вычитания рассчитанного значения (из нашей подгонки) из фактических наблюдаемых значений (наши фиктивные данные). ковариация)
    stdevs = np.sqrt (np.diag (cov)) # Вычислить остатки
    res = y_dummy - exponential (x_dummy, * pars)

    * pars - позволяет нам развернуть массив pars , т.е. [a, b ] вводится как a, b

    Параметры подгонки и стандартные отклонения

    a = 0,509 ± 0,017

    b = 0,499 ± 0,002

    Мы видим, что оба подгоночных параметра очень близки к нашим входные значения a = 0.5 и b = 0,5 , поэтому функция curve_fit сходится к правильным значениям. Теперь мы можем наложить соответствие поверх данных разброса, а также нанести на график остатки, которые должны быть распределены случайным образом и близки к 0, подтверждая, что у нас есть хорошее соответствие.

     # Постройте данные подгонки как наложение на данные разброса 
    ax.plot (x_dummy, exponential (x_dummy, * pars), linestyle = '-', linewidth = 2, color = 'black')

    linestyle - стиль линии построенной линии ( - для пунктирной линии)

    График разброса фиктивных экспоненциальных данных с наложенной линией аппроксимации График остатков от экспоненциальной аппроксимации

    Другой часто используемой функцией аппроксимации является степенной закон общая формула может иметь вид:

    Общая степенная функция

    Подобно тому, как мы делали предыдущую подгонку, мы сначала определяем функцию:

     # Функция для вычисления степенного закона с константами a и b 
    def power_law (x, а, б):
    возврат а * нп.power (x, b)

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

     # Сгенерировать фиктивный набор данных 
    x_dummy = np.linspace (start = 1, stop = 1000, num = 100)
    y_dummy = power_law (x_dummy, 1, 0.5) # Добавить шум из распределения Гаусса
    noise = 1.5 * np. random.normal (size = y_dummy.size)
    y_dummy = y_dummy + noise
    Диаграмма рассеяния фиктивных степенных данных с добавленным гауссовым шумом

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

     # Установить логарифмическое масштабирование по осям x и y 
    ax.set_xscale ('log')
    ax.set_yscale ('log') # Редактировать основные и второстепенные положения делений осей x и y
    ax.xaxis.set_major_locator (mpl.ticker.LogLocator (base = 10.0))
    ax.yaxis.set_major_locator (mpl.ticker.LogLocator (base = 10.0)) # Установить пределы оси
    ax.set_xlim (10, 1000)
    ax.set_ylim (1 , 100)
    Точечная диаграмма фиктивных степенных данных с логарифмическими осями

    Теперь мы можем выполнить те же шаги подгонки, что и для экспоненциальных данных:

     # Подобрать фиктивные данные степенного закона 
    pars, cov = curve_fit (f = power_law, xdata = x_dummy, ydata = y_dummy, p0 = [0, 0], bounds = (- np.inf, np.inf)) # Получение стандартных отклонений параметров (квадратные корни из # диагонали ковариации)
    stdevs = np.sqrt (np.diag (cov)) # Расчет остатков
    res = y_dummy - power_law (x_dummy, * pars)

    Параметры подгонки и стандартные отклонения

    a = 1,057 ± 0,096

    b = 0,492 ± 0,014

    График рассеяния фиктивных данных степенного закона с наложенной линией подгонки График остатков от мощности -law fit

    Подгонка пика с помощью функции Гаусса, Лоренца или комбинации обеих функций очень часто используется в таких экспериментах, как дифракция рентгеновских лучей и фотолюминесценция, для определения ширины линий и других свойств.В этом примере мы будем иметь дело с подгонкой пика Гаусса по общей формуле, приведенной ниже:

    Общая функция Гаусса
     # Функция для вычисления Гаусса с константами a, b и c 
    def gaussian (x, a, b, c ):
    return a * np.exp (-np.power (x - b, 2) / (2 * np.power (c, 2))) # Сгенерировать фиктивный набор данных
    x_dummy = np.linspace (start = -10 , stop = 10, num = 100)
    y_dummy = gaussian (x_dummy, 8, -1, 3) # Добавить шум из распределения Гаусса
    noise = 0.5 * np.random.normal (size = y_dummy.size)
    y_dummy = y_dummy + noise
    График рассеяния фиктивных гауссовских данных с добавленным шумом

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

     # Установите фиктивные данные Гаусса 
    pars, cov = curve_fit (f = gaussian, xdata = x_dummy, ydata = y_dummy, p0 = [0, 0, 0], bounds = (- np.inf, np.inf)) # Получить стандартные отклонения параметров (квадратные корни из # диагонали ковариации)
    stdevs = np.sqrt (np.diag (cov)) # Вычисляем остатки
    res = y_dummy - power_law (x_dummy, * pars)

    Однако, когда мы это делаем, мы получаем следующий результат:

     print (pars) 
    >>> [0. 0. 0.] print (stdevs)
    >>> [inf inf inf]

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

     # Подобрать фиктивные данные Гаусса 
    pars, cov = curve_fit (f = gaussian, xdata = x_dummy, ydata = y_dummy, p0 = [5, -1, 1], bounds = (- np.inf, np.inf) )

    На этот раз наша подгонка прошла успешно, и мы остались со следующими параметрами подбора и остатками:

    Параметры подгонки и стандартные отклонения

    a = 8,074 ± 0,128

    b = –0,948 ± 0,054

    c = 2,945 ± 0,054

    График рассеяния фиктивных гауссовских данных с наложенным соответствием График остатков гауссовского приближения

    Надеюсь, следуя примеру предыдущих примеров, теперь вы сможете подогнать свои экспериментальные данные к любым нелинейным функция! Надеюсь, вам понравился этот урок, и все представленные здесь примеры можно найти в этом репозитории Github.

    .

    Смотрите также