Это присказка не сказка продолжить

Подобный материал:финист ясный сокол, снегурочка сборник русских народных сказок, пословиц и поговорок,, 9.97kb.викторина рассчитана на знание детей сказок: сказка о

Подобный материал:

  • Финист Ясный Сокол», «Снегурочка» Сборник русских народных сказок, пословиц и поговорок,, 9.97kb.
  • Викторина рассчитана на знание детей сказок: «Сказка о попе и работнике его Балде», 50.98kb.
  • Викторина рассчитана на знание учащимися сказок: «Сказка о попе и работнике его Балде», 216.37kb.
  • Рождественская сказка, 22.84kb.
  • Как добраться до базы отдыха «Сказка», где будет проходить конференция асет, 100.79kb.
  • Фолиант желаний или утренняя сказка дедушки-вампира, 118.88kb.
  • Сказки, 599.59kb.
  • Сказки, 769.86kb.
  • Сказка о силе присказка, 167.11kb.
  • Сценарий часа общения для учащихся 1-2 классов «Сказка ложь, да в ней намек, добрым, 211.98kb.

Сказка

– занимательный рассказ о необыкновенных чудесах,

часто о фантастических событиях и приключениях.

Сказки бывают двух видов:

народные и авторские.

Выражаемая мысль в сказке принадлежит народу.

Сказки бывают: бытовые, о животных, волшебные.

Сказка начинается с присказки. Например: «Это не сказка, а присказка, сказка будет впереди».

Начало сказки – это зачин. Например: «Жили – были старик да старуха».

Затем идет повествование сказки.

Концовка – это последние слова сказки. Например: «… а кто слушал молодец».

Сказка

– занимательный рассказ о необыкновенных чудесах,

часто о фантастических событиях и приключениях.

Сказки бывают двух видов:

народные и авторские.

Выражаемая мысль в сказке принадлежит народу.

Сказки бывают: бытовые, о животных, волшебные.

Сказка начинается с присказки. Например: «Это не сказка, а присказка, сказка будет впереди».

Начало сказки – это зачин. Например: «Жили – были старик да старуха».

Затем идет повествование сказки.

Концовка – это последние слова сказки. Например: «… а кто слушал молодец».

Сказка

– занимательный рассказ о необыкновенных чудесах,

часто о фантастических событиях и приключениях.

Сказки бывают двух видов:

народные и авторские.

Выражаемая мысль в сказке принадлежит народу.

Сказки бывают: бытовые, о животных, волшебные.

Сказка начинается с присказки. Например: «Это не сказка, а присказка, сказка будет впереди».

Начало сказки – это зачин. Например: «Жили – были старик да старуха».

Затем идет повествование сказки.

Концовка – это последние слова сказки. Например: «… а кто слушал молодец».

Сказка

– занимательный рассказ о необыкновенных, часто фантастических событиях и приключениях.

Сказки бывают двух видов: народные и авторские.

Выражаемая мысль в сказке принадлежит народу.

Сказки бывают: бытовые, о животных, волшебные.

Сказка начинается с присказки. Например: «Это не сказка, а присказка, сказка будет впереди».

Начало сказки – это зачин. Например: «Жили – были старик да старуха».

Затем идет повествование сказки.

Концовка – это последние слова сказки. Например: «… а кто слушал молодец».

Сказка

– занимательный рассказ о необыкновенных, часто фантастических событиях и приключениях.

Выражаемая мысль в сказке принадлежит народу.

Сказки бывают: бытовые, о животных, волшебные.

Сказка начинается с присказки. Например: «Это не сказка, а присказка, сказка будет впереди».

Начало сказки – это зачин. Например: «Жили – были старик да старуха».

Концовка – это последние слова сказки. Например: «… а кто слушал молодец».

Словарь.Фольклор

устное народное творчество.

Сказка

занимательный рассказ о необыкновенных, часто фантастических событиях и приключениях.

Эпиграф

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

Образ

это не сам предмет, а его след в душе.

Присказка

прибаутка, предшествующая зачину в сказке.

Зачин

начало сказки.

Концовка

– это последние слова в сказке.

Лист контроля.

Фамилия, имя учащихся 1 шаг 2 шаг 3 шаг 4 шаг 5 шаг 6 шаг 7 шаг Общее количество

баллов

1
2
3
4
5
6

Секретарь группы: _____________________

РУКОВОДИТЕЛЬ СЕКРЕТАРЬ ПОМОЩНИК

РУКОВОДИТЕЛЯ

РУКОВОДИТЕЛЬ СЕКРЕТАРЬ ПОМОЩНИК

РУКОВОДИТЕЛЯ

РУКОВОДИТЕЛЬ СЕКРЕТАРЬ ПОМОЩНИК

РУКОВОДИТЕЛЯ

ПОМОЩНИК

РУКОВОДИТЕЛЯ

ПОМОЩНИК

РУКОВОДИТЕЛЯ

ПОМОЩНИК

РУКОВОДИТЕЛЯ

ПОМОЩНИК

РУКОВОДИТЕЛЯ

ПОМОЩНИК

РУКОВОДИТЕЛЯ

ПОМОЩНИК

РУКОВОДИТЕЛЯ

ПОМОЩНИК

РУКОВОДИТЕЛЯ

ПОМОЩНИК

РУКОВОДИТЕЛЯ

ПОМОЩНИК

РУКОВОДИТЕЛЯ

1.Друзья познаются в беде. Каша из топора.

Доброе братство лучше богатства.

За добро добром и платят. Кот в сапогах.

Догадка не хуже разума.

Худо тому, кто добра не делает никому. Петушок и бобовое зёрнышко.

1.

Друзья познаются в беде. Каша из топора.

Доброе братство лучше богатства.

За добро добром и платят. Кот в сапогах.

Догадка не хуже разума.

Худо тому, кто добра не делает никому. Петушок и бобовое зёрнышко.

1.Друзья познаются в беде. Каша из топора.

Доброе братство лучше богатства.

За добро добром и платят. Кот в сапогах.

Догадка не хуже разума.

Худо тому, кто добра не делает никому. Петушок и бобовое зёрнышко.

2.Петушок, курочка, корова, кузнец Каша из топора.

Кот в сапогах.

Солдат, старуха.

Петушок и бобовое зёрнышко

Кот, сыновья, король, маркиз Карабас.

2.Петушок, курочка, корова, кузнец Каша из топора.

Кот в сапогах.

Солдат, старуха.

Петушок и бобовое зёрнышко

Кот, сыновья, король, маркиз Карабас.

2.Петушок, курочка, корова, кузнец Каша из топора.

Кот в сапогах.

Солдат, старуха.

Петушок и бобовое зёрнышо

Кот, сыновья, король, маркиз Карабас.

3. Волшебная сказка Каша из топора.

Бытовая сказка Петушок и бобовое зёрнышко.

Сказка о животных Кот в сапогах.

3. Волшебная сказка Каша из топора.

Бытовая сказка Петушок и бобовое зёрнышко.

Сказка о животных Кот в сапогах.

3. Волшебная сказка Каша из топора.

Бытовая сказка Петушок и бобовое зёрнышко.

Сказка о животных Кот в сапогах.

Муниципальное общеобразовательное учреждение

средняя школа №16 п. Восход

Новокубанский район

Краснодарский край

Урок литературного чтения

2 «Б» класс

Учитель Чаплыгина Ирина Геннадьевна

Дата: 26 октября 2007г.

Тема

: Сказка как вид народной прозы. Виды сказок.

Русские народные сказки «Каша из топора»,

«Петушок и бобовое зёрнышко», авторская французская

сказка Ш. Перро «Кот в сапогах».

Тип урока

: комплексного применения различных технологий:

метода позиционного обучения, кластерной,

игровой, элементы педмастерской

с применением мультимедиа, групповой.

Цели:

Обучающая.1. Через «шаги» метода позиционного обучения

продолжить знакомство со сказкой как

фольклорным жанром и вывести учеников

на самостоятельный анализ содержания сказок.

2. Формирование у школьников убеждения,

что мир сказок интересен и разнообразен, что

каждый читатель может найти в нём

близкое и нужное себе.

Воспитывающая. 1. Воспитывать у учащихся интерес

и любовь к сценическому

искусству, давать правильную

оценку таким категориям как добро

зло.

Развивающая. 1. Развитие творческих способностей,

умений сопоставлять, анализировать.

2. Развитие умений и навыков

коллективной работы.

Оборудование

: мультимедиа, учебник В. Свиридова

«Литературное чтение 2 класс», иллюстрации,

листы контроля, карточки – задания, костюмы

и предметы для инсценировки, выставка

«Мои любимые сказки»,пейджи

«Руководитель», «Секретарь»,

«Помощник руководителя».

План урока.

/№ Этап урока Содержание этапа Время /мин./
1 Оргмомент Нацелить учащихся на урок 1
2 Метод позиционного обучения

На доске

: число, тема, словарная работа.

Ход урока.

  1. Организационный момент. Приветствие, напутствие на урок.
  2. Метод позиционного обучения.

1 шаг. ТЕЗИС».

Тема урока. Цели урока.

— Можно ли по оформлению кабинета догадаться о теме урока?

(Можно.)

— «В некотором царстве, в некотором государстве жил-был…» Начало чего прозвучало?

(Сказки.)

— Что такое сказка!

Социализация.

(Работа в группах, обсуждение.)

Афиширование.

(Ответы от каждой группы.)

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

СЛАЙД №1

Тема нашего урока

: «Сказка как вид народной прозы.

Виды сказок.

Русские народные сказки «Каша из топора»,

«Петушок и бобовое зёрнышко», авторская

французская сказка Ш. Перро «Кот в сапогах».

Цели урока

: Обучающая.1. Через «шаги» метода

позиционного обучения

продолжить знакомство со сказкой как

фольклорным жанром и вывести учеников

на самостоятельный анализ содержания сказок.

2. Формирование у школьников убеждения,

что мир сказок интересен и разнообразен, что

каждый читатель может найти в нём

близкое и нужное себе.

Воспитывающая. 1. Воспитывать у учащихся интерес

и любовь к сценическому

искусству, давать правильную

оценку таким категориям как добро

зло.

Развивающая. 1. Развитие творческих способностей,

умений сопоставлять, анализировать.

2. Развитие умений и навыков

коллективной работы.

Эпиграф нашего урока

:

СЛАЙД №2

«Сказка – не сказка без чудес.

Заходи в волшебный лес…»

2 шаг «ПОНЯТИЕ».

— Секретари получите конверты с заданиями.

(Задание:

Сказка

– занимательный рассказ о необыкновенных, часто фантастических событиях и приключениях.

Сказки бывают двух видов: народные и авторские.

Выражаемая мысль в сказке принадлежит народу.

Сказки бывают: бытовые, о животных, волшебные.

Сказка начинается с присказки. Например: «Это не сказка, а присказка, сказка

будет впереди».

Начало сказки – это зачин. Например: «Жили – были старик да старуха».

Затем идет повествование сказки.

Концовка – это последние слова сказки. Например: «… а кто слушал молодец».)

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

Социализация.

(Ученики работают в группах и выписывают ключевые слова).

Афиширование.

(Представитель каждой группы читает слова, которые они выписали).

Афиширование учителем

.

СЛАЙД №3Сказка

– занимательный рассказ о необыкновенных,

часто фантастических событиях и приключениях.

Сказки бывают двух видов: народные и авторские.

Выражаемая мысль в сказке принадлежит народу.

Сказки бывают: бытовые, о животных, волшебные.

Сказка начинается с присказки.

Начало сказки – это зачин.

Повествование сказки.

Концовка – это последние слова сказки.

3 шаг «РИСУНОК».

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

— Мы разобрали, что такое сказка, узнали, какие бывают сказки. Ребята, а кто напомнит тему нашего урока? (Дети читают тему урока на доске).

— Ваша задача: попробовать передать тему урока рисунком. Как можно тему нашего урока представить в виде рисунка..

Социализация.

(Дети в группах рисуют рисунки).

Афиширование

. (Учащиеся показывают и рассказывают своё видение темы урока в рисунке).

— Афиширование учителем.

СЛАЙД №4

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

Физминутка.

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

Сказочные лучики играют на стене,

Поманю их пальчиком.

Пусть бегут ко мне.

Ну, лови, лови скорей!

Вот-вот, вот – левей, левей!

Убежал на потолок.

(Дети ловят лучики на стене).

4 шаг «ПРАКТИКА».

(Работа по содержанию сказок).

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

Задания:

1.Друзья познаются в беде. Каша из топора.

Доброе братство лучше богатства.

За добро добром и платят. Кот в сапогах.

Догадка не хуже разума.

Худо тому, кто добра не делает никому. Петушок и бобовое зёрнышко.

2.Петушок, курочка, корова, кузнец Каша из топора.

Кот в сапогах.

Солдат, старуха.

Петушок и бобовое зёрнышко

Кот, сыновья, король, маркиз Карабас.

3. Волшебная сказка Каша из топора.

Бытовая сказка Петушок и бобовое зёрнышко.

Сказка о животных Кот в сапогах.

-1. Выберите эпиграф к сказкам, покажите стрелочкой.

— Социализация.

— Афиширование.

— 2. Распределите героев по сказкам, укажите стрелочкой.

— Социализация.

— Афиширование.

— 3. Определите вид сказки, укажите стрелочкой.

— Социализация.

— Афиширование.

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

— Социализация.

— Афиширование. Дети по группам читают по ролям.

— 5. Вопросы по содержанию сказок.

1группа. За что сын мельника получил всё «на блюдечке с голубой каёмочкой»?

2 группа. В сказке «Петушок и бобовое зёрнышко» было ли волшебство?

3 группа. Можно ли сказку «Каша из топора» отнести к бытовой сказке? Почему?

5 шаг. «СЦЕНИЧЕСКОЕ ИСКУССТВО». СЛАЙД № 5

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

— Социализация. Учащиеся выбирают реквизит, готовятся к выступлению.

— Афиширование.

6 шаг «ИТОГ УРОКА». СЛАЙД №6 И- В чём проявлялся ваш интерес? Т- Какие творческие задания вам понравились? О- С кем вы общались, что узнали нового? Г- Назовите главную мысль нашего урока.7 шаг «ТЫ МНЕ _ Я ТЕБЕ!»

— Социализация. Учащиеся обдумывают вопрос, который они зададут другой группе.

— Афиширование. Дети задают вопрос, выслушивают ответ и сравнивают его со своим.

8 шаг «ЭКСПЕРТИЗА»СЛАЙД №7

— Секретари, сдайте листы контроля работы членов группы.

— Определите по обложкам виды сказок. ( Учитель в это время подсчитывает количество баллов каждой группы.

— Баллы подсчитаны. Учитель выдает сертификаты членам группы, которые получили больше баллов.

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

«СЧАСТЬЕ».

СЛАЙД № 8

Вслушайтесь в эти слова:

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

-Пусть в вашей жизни всё складывается так, как заканчиваются сказки, где «где добро побеждает зло».

СЛАЙД № 9

0aouujyymmcbx hqzzlul s2o0

Когда я вижу, как кто-то учит кого-то языку программирования, то частенько замечаю тенденцию показывать новичкам примитивные примеры в виде ToDo list. Помимо того, что подобные примеры не учат ничему полезному в программировании, они очень однобоки и не позволяют оценить все плюсы и минусы какой-либо среды разработки.

Меня это удручает. Давайте попробуем написать что-нибудь полезное и при этом показать вам, что можно и чего не нужно делать с достаточно новой технологией Microsoft под названием Blazor.

Не так давно мне пришлось помогать детишкам разобраться с программированием. Пацаны были маленькими, но глаза их были полны энтузиазма и постоянно слышался вопрос «Как?» и «Почему?». Кто-то из подопечных притащил в студию пару IoT реле, которые позволяли включать и выключать лампочки по сети. Конечно, для нас, Хабравчан, такая штука не очень интересна, но для подростков было как раз то что надо. Почему бы и нет, подумал я, и мы начали писать всякие реле с таймингами, которые позволяют анимировать гирлянды и всё такое. В конце концов, не хочу вас пугать, но конец года уже близится и скоро нам надо будет украшать ёлки и помещения.

Притащенные реле были куплены на алибабе и амазоне. Стоили они копейки и были в довольно большом ассортименте. Дети были рады тому, что первое реле отлично управлялось через HTTP путём посыла сформированных запросов. Такую штуку легко реализовать на любом языке программирования. Посему даже с яваскриптом вопросов не возникло, и все были рады.

Проблемы начались со вторым реле. В нём запросы надо было посылать в виде ASCII строки. А третье реле вообще требовало бинарного ввода на порту. Все программы по миганию гирляндами начали обрастать каким-то нездоровым количеством логики и превращались в костыли.

Было решено реализовать следующую программу:

  1. У нас есть список моделей различных реле.
  2. В списке мы указываем тип передачи данных и список команд, доступный для каждой модели.
  3. Создаём список устройств. Каждое устройство имеет отдельный IP-адрес, имя и название модели.
  4. На основе этой информации создаётся строка управления для каждой команды, каждого устройства, которая выглядит следующим образом:
    http://control-center/control/relay-lobby/port-1-turn-on
    http://control-center/control/relay-lobby/port-1-turn-off
    http://control-center/control/relay-lobby/port-2-turn-on
    http://control-center/control/relay-lobby/port-2-turn-off
    http://control-center/control/relay-lobby/port-3-turn-on
    http://control-center/control/relay-lobby/port-3-turn-off
    

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

Ладно, отбираем самых продвинутых учеников и идём писать.

Работать будем с последней версией Blazor для .NET 6.

Создаём пустой проект и идём заниматься проектированием. В принципе, в ТЗ всё достаточно хорошо описано, есть база данных, в ней есть реле, тут всё просто. Для базы данных мы возьмёмся за Entity Framework Core и будем использовать Code-Frist подход (то есть сначала мы пишем код, после чего фреймворк генерирует на основании этого кода базу данных).

База данных

Модель доступна здесь.

public class DataModelContext : DbContext
    {
        public DataModelContext (DbContextOptions<DataModelContext> options)
            : base(options)
        {
        }

        public DbSet<Model> Models { get; set; }
        public DbSet<Device> Devices { get; set; }
        public DbSet<Command> Commands { get; set; }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Model>().ToTable("Model");
            modelBuilder.Entity<Device>().ToTable("Device");
            modelBuilder.Entity<Command>().ToTable("Command");
        }
    }

    public class Model
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
        public ICollection<Command> Commands { get; set; }
        public ICollection<Device> Devices { get; set;}
    }

    public class Device
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
        public string Address { get; set; }
        public int Port { get; set; }

        public int ModelId {get;set;}
        public Model Model {get;set;}

    }


    public class Command
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
        public CommandType Type { get; set; }
        public string Payload { get; set; }
        public Model Model {get;set;}
    }

    public enum CommandType
    {
        AsciiString,
        UtfString,
        ByteArray,
        Binary,
    }

Если вы никогда не видели ничего подобного, то давайте остановимся и подтянем знания. Перед вами — Entity Framework. Это фреймворк, который позволяет ускорить разработку баз данных для приложений, написанных на платформе .NET. Приложения, в частности, написаны на языке C#. В основном потому что для того, чтобы вы могли добраться до данных, вам предложено использовать функцию языка под названием LINQ (Language-integrated query).

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

Чем это плохо? EF Core позволяет подключить вашу программу к различным базам данных, и вам не нужно будет учить синтаксис. Всё можно сделать в самом языке. В интернете вы найдёте множество баталий по поводу того, что подобный подход может шибко отразиться на производительности. И действительно, Join в SQL может выглядеть очень красиво и передавать вам в ответ только те данные, которые вы запросили. Если вы напишете кривой запрос на Linq, то вы можете в одну строку увалить целый кластер.

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

Сразу оговорюсь: теперь следовало бы написать бизнес-логику на основе этой базы данных. Но я решил, что делать это будут подопечные, и оставил эту задачу для них (в данном случае бизнес-логика вполне соответствует методам, предложенным самим Entity Framework, и нам ничего дополнительного писать не нужно).

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

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

Frontend

Для тех, кто здесь в первый раз, давайте подтянем теорию. Blazor — это относительно новый фреймворк для создания сайтов, разработанный компанией Microsoft на основе open-source лицензии.

Основной прикол Blazor заключается в том, что всю логику на сайте вы можете написать на C#, без использования Javascript (чем мы здесь и займёмся в показательных целях). Сайт будет скомпилирован в WebAssembly, и вы сможете выложить его на сервер. Для тех, кто никогда не работал с WebAssembly, рекомендую почитать информацию — здесь.

Что это значит для разработчиков? Сайт представляет из себя несколько файлов — пустой HTML, небольшой JavaScript, который будет управлять сайтом, и приличный кусок кода на C#, скомпилированный в WebAssembly файл. Подобная файловая структура не требует никакого специального сервера для работы. Вы можете выложить это всё в открытый доступ на статическом сервере, без какой-либо платформы Microsoft, и всё будет работать.

Но не всё в жизни так просто. Сайт, в котором кнопки нажимаются и всё крутится и вертится — это хорошо, но он ничем не лучше, чем спиннеры и фиджит-кьюбы. Всё взаимодействие с пользователем должно быть записано на сервере.

Идея номер один — сайт написан на Blazor и у вас есть отдельный сервер для API, который позволяет дёргать функции удалённо через Web.

Идея номер два — Blazor может и не делать всего этого WebAssembly. Можно скомпилировать ваш код в библиотеку .NET и запускать его, как в старом добром клиент-серверном приложении. Код будет выполняться на сервере, а клиент будет обновлять страницу на экране, отражая изменения.

Именно этим подходом мы и воспользуемся.

Тут надо заметить пару вещей.

В старые добрые времена ASP.NET мы всё делали так — клиент нажимает кнопку на сайте. Весь сайт, представляющий собою форму, отправляется на сервер со всеми данными на экране. Сервер этот сайт обрабатывает, меняет его и выплёвывает обратно на экран. Всё это занимает меньше 10-ти секунд, и все этому рады в 2002 году. Но у нас на дворе 2021, и это нам не подойдёт.

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

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

Основной плюс Blazor заключается в том, что вам не нужно морочить себя тем, как передавать сообщения с сервера и на сервер. Всё сделано автоматически. Даже если вам захочется переключить своё приложение из Server-Side в Web Assembly, вам всего-то нужно поменять один параметр в конфигах.

Основной минус Blazor заключается именно в этом же. Как бы ни были прекрасны все эти ускорения, они не будут быстрее, чем статический контент из кеша. Не стоит писать каждый сайт на Blazor, его удел — сложные приложения с большим количеством кнопок, вертелок и тому подобного. Если вам вдруг приспичило написать бложик, то писать его надо не на Blazor.

Backend

Теперь перейдём к Backend, с которым мы будем работать. Как я уже сказал, у нас на руках есть код, который будет брать определённые последовательности символов и передавать их на реле. Этот код будет использовать .NET TCPClient для отправки данных. Обычно таким сайты не занимаются.

Для создания этого контроллера мы воспользуемся технологией ASP.NET Core MVC.

В принципе, сам код MVC предельно прост:

[Microsoft.AspNetCore.Mvc.Route("api/[controller]")]
[ApiController]
public class SendController : Controller
{
    [Inject]
    private IDbContextFactory<DataModelContext> Context { get; set; }

    public SendController(IDbContextFactory<DataModelContext> dmc)
    {
        Context = dmc;
    }
    
    [HttpGet("{Device}/{Command}")]
    public JsonResult Get(string device, string command)
    {
        try
        {

            CommandRunner c = new(Context.CreateDbContext());
            var answer = c.Run(device, command);
            return Json(new { result = "success", device = device, command=command, payload = answer });

        }
        catch (Exception ex)
        {
            return Json(new { result="error", message= ex.Message });
        }
    }
}

Мы просто определяем путь [HttpGet("{Device}/{Command}")]. Если пользователь заходит на сайт по этому адресу, то мы подразумеваем, что первая часть команды будет идентификатором устройства, а вторая часть — идентификатором команды, которую нужно послать.

В случае успеха мы дадим подтверждение, а в случае какой-либо ошибки сообщим об этом клиенту.

Как вы видите, у нас также есть класс CommandRunner, который как раз и выполняет команды на сервере, отправляя пакеты на устройства. Давайте заглянем в этот класс.

Код CommandRunner.Run достаточно прост:

public string Run(String Device, String Command)
{
    var dev = DbContext.Devices.Include(p => p.Model).ThenInclude(p => p.Commands).First(p => p.Name.ToLower() == Device.ToLower());
    var com = dev.Model.Commands.First(p => p.Name.ToLower() == Command.ToLower());

    var answer = Executor.Say(com.Payload, com.Type, dev.Address, dev.Port);

    return String.Join(", 0x", answer);
}

А код Executor.Say в свою очередь выполняет следующее:

public static Byte[] Say(string What, CommandType Type, string Address, int Port)
{

    Byte[] bt = Type switch
    {
        CommandType.AsciiString => System.Text.Encoding.ASCII.GetBytes(What),
        CommandType.UtfString => System.Text.Encoding.UTF8.GetBytes(What),
        CommandType.Binary => ProcessBinary(What, 8),
        CommandType.ByteArray => ProcessBytes(What),
        _ => Array.Empty<byte>()
    };


    using TcpClient t = new TcpClient(Address, Port);
    var s = t.GetStream();
    s.Write(bt, 0, bt.Length);
    return bt;
}

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

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

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

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

  static Byte[] ProcessBytes(string What)
        {
            if (What.Length % 2 == 1) What += "0"; //If user sent us uneven byte count
            List<Byte> ret = new(What.Length/2);
            foreach (String ch in What.SplitInParts(2))
            {
                var d1 = Convert.ToByte(ch[0].ToString(), 16);
                var d2 = Convert.ToByte(ch[1].ToString(), 16);
                d1 *= 0x10;
                d1 += d2;
                ret.Add(d1);
            }
            return ret.ToArray();
        }

        static Byte[] ProcessBinary(string What, int WordLength)
        {
            List<Byte> ret = new(What.Length);
            foreach (var ch in What.SplitInParts(WordLength))
            {
                ret.Add(Convert.ToByte(ch, 2));
            }
            return ret.ToArray();

        }

После чего мы просто выплёвываем эту последовательность на адрес устройства и считаем свою задачу выполненной.

Итак, что же нужно знать o MVC фреймворке?

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

Это только присказка, сказка впереди

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

Всё хорошо, вокруг прыгают пони и поют птички. Всё работает.

Ага, как бы не так.

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

А пока что вы можете полюбоваться исходными кодами здесь.


— 15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS
— 20% на выделенные серверы AMD Ryzen и Intel Core — HABRFIRSTDEDIC.
Доступно до 31 декабря 2021 г.

14 ответов

Последний —
Перейти

гость

здравствуйте! Что понимается под восстановлением справедливости? Вот я против ЛГБТ и прочей швали, будут ли уничтожены и обезврежены все представители нетрадиционной ориентации, что есть против Истины Бога-Абсолюта?

Принцесса Эльза

Слово мое, как и Истина Цивилизации нашей, не имеет прямой связи с религией. Хотя точки соприкосновения возможны.
Уничтожить надо не «лгбт», ибо это лишь следствие. Уничтожить надо семя рагатское.
500 тысяч лет назад семя рагатское не было полностью уничтожено. Рагаты были закабалены в рабство. И вот среди рабов это семя передается.
Когда свершился Первый Десант Предтеч на Землю, давший начало земной цивилизации, то в Десанте были и рабы (для обеспечения быта). И никто не мог предвидеть, что рабы эти на Земле разбегутся, а потом воссоединятся.
От них и варвары, от них и либерализм, и «мировая закулиса», закабалившая Землю.
Так вот, ЛГБТ выгоден либералам как опора, как социальная база.
Когда наш Второй Десант раздавит «сильных мира земного» (самозванцев, закабаливших Землю), и уничтожит либерализм, то будет уничтожен и ЛГБТ.
Ибо если уничтожается причина, то уничтожается и следствие.

гость

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

userpic__13-е привидение

Принцесса Эльза

Если Вы за Истину, то Вам только со мной. Иного пути нет.
Я Принцесса Предтеч, руковожу Цивилизацией, 25 тысячелетий назад породившей нынешних землян.
Злодеяния «мировой закулисы» Земли, и их последователей, воистину перешли все границы.
И поэтому я, Принцесса Предтеч, в конце 2018 года нашла в себе волю и сказала — НАЧАЛО ПОЛОЖЕНО!
И началась подготовка Второго Великого Десанта Предтеч на Землю. Он и освободит землян от нечести той разношерстной.
А сами земляне освободиться не смогут. Ибо невозможно самого себя за волосы вытащить из трясины.
Поэтому и необходимо наше, т.е. инопланетное, вмешательство.
Я уверена, что Вселенский Разум принимает участие в этом.

гость

здравствуйте! Что понимается под восстановлением справедливости? Вот я против ЛГБТ и прочей швали, будут ли уничтожены и обезврежены все представители нетрадиционной ориентации, что есть против Истины Бога-Абсолюта?

13-е привидение

Что же ты забыла сообщить, что сама пропагандируешь лесбиянство?)))

userpic__13-е привидение

Принцесса Эльза

Никакого лесбиянства я не пропагандирую. Я Амазонка, а не лесбиянка.
Во первых — мы,- иная цивилизация. И нельзя сравнивать «в лоб», как на Земле, и как у нас.
Да, на Планете Предтеч одобряются отношения Ж+М, а также Ж+Ж, которые в основном между Амазонками, так сложилось исторически.
Отношения М+М отвергаются, и недопустимы.
Никаких «лесбийских организаций» у нас нет и не было, нет никаких ЛГБТ, который является сугубо земным извращенным продуктом.
Не пропагандируем мы ни Ж+Ж, ни Ж+М. Однако…
В нашей Цивилизации проявляется особая забота о пАрах, которые растят детей. Это, конечно, тоже не «пропаганда» Ж+М, это ЗАБОТА О врспроизводстве Цивилизации, и о родителях.
На Земле гнобят за то, что растят детей. Отнимают детей у матерей, не помогают родителям…
А мы заботимся о парах. Они у нас на полном обесречении. Мы им квартиры даем, дома…Одна пара в среднем до 10 детей растит!

Гость

*** — это агрессивно настроенные необразованные граждане типа вас.

Принцесса Эльза

Если Вы за Истину, то Вам только со мной. Иного пути нет.
Я Принцесса Предтеч, руковожу Цивилизацией, 25 тысячелетий назад породившей нынешних землян.
Злодеяния «мировой закулисы» Земли, и их последователей, воистину перешли все границы.
И поэтому я, Принцесса Предтеч, в конце 2018 года нашла в себе волю и сказала — НАЧАЛО ПОЛОЖЕНО!
И началась подготовка Второго Великого Десанта Предтеч на Землю. Он и освободит землян от нечести той разношерстной.
А сами земляне освободиться не смогут. Ибо невозможно самого себя за волосы вытащить из трясины.
Поэтому и необходимо наше, т.е. инопланетное, вмешательство.
Я уверена, что Вселенский Разум принимает участие в этом.

Принцесса Эльза

Никакого лесбиянства я не пропагандирую. Я Амазонка, а не лесбиянка.
Во первых — мы,- иная цивилизация. И нельзя сравнивать «в лоб», как на Земле, и как у нас.
Да, на Планете Предтеч одобряются отношения Ж+М, а также Ж+Ж, которые в основном между Амазонками, так сложилось исторически.
Отношения М+М отвергаются, и недопустимы.
Никаких «лесбийских организаций» у нас нет и не было, нет никаких ЛГБТ, который является сугубо земным извращенным продуктом.
Не пропагандируем мы ни Ж+Ж, ни Ж+М. Однако…
В нашей Цивилизации проявляется особая забота о пАрах, которые растят детей. Это, конечно, тоже не «пропаганда» Ж+М, это ЗАБОТА О врспроизводстве Цивилизации, и о родителях.
На Земле гнобят за то, что растят детей. Отнимают детей у матерей, не помогают родителям…
А мы заботимся о парах. Они у нас на полном обесречении. Мы им квартиры даем, дома…Одна пара в среднем до 10 детей растит!

  • Это ненормально как пишется
  • Это небезопасно как пишется
  • Это не в счет как пишется
  • Это не вчерашний суп как пишется
  • Это не просто сказка манга