Подобный материал:
- Финист Ясный Сокол», «Снегурочка» Сборник русских народных сказок, пословиц и поговорок,, 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 шаг. ТЕЗИС».
Тема урока. Цели урока.
— Можно ли по оформлению кабинета догадаться о теме урока?
(Можно.)
— «В некотором царстве, в некотором государстве жил-был…» Начало чего прозвучало?
(Сказки.)
— Что такое сказка!
—
Социализация.
(Работа в группах, обсуждение.)
—
Афиширование.
(Ответы от каждой группы.)
— Таков вопрос, который ставит себе человек, желая осмыслить известные ему с детских лет занимательные истории.
СЛАЙД №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
Когда я вижу, как кто-то учит кого-то языку программирования, то частенько замечаю тенденцию показывать новичкам примитивные примеры в виде ToDo list. Помимо того, что подобные примеры не учат ничему полезному в программировании, они очень однобоки и не позволяют оценить все плюсы и минусы какой-либо среды разработки.
Меня это удручает. Давайте попробуем написать что-нибудь полезное и при этом показать вам, что можно и чего не нужно делать с достаточно новой технологией Microsoft под названием Blazor.
Не так давно мне пришлось помогать детишкам разобраться с программированием. Пацаны были маленькими, но глаза их были полны энтузиазма и постоянно слышался вопрос «Как?» и «Почему?». Кто-то из подопечных притащил в студию пару IoT реле, которые позволяли включать и выключать лампочки по сети. Конечно, для нас, Хабравчан, такая штука не очень интересна, но для подростков было как раз то что надо. Почему бы и нет, подумал я, и мы начали писать всякие реле с таймингами, которые позволяют анимировать гирлянды и всё такое. В конце концов, не хочу вас пугать, но конец года уже близится и скоро нам надо будет украшать ёлки и помещения.
Притащенные реле были куплены на алибабе и амазоне. Стоили они копейки и были в довольно большом ассортименте. Дети были рады тому, что первое реле отлично управлялось через HTTP путём посыла сформированных запросов. Такую штуку легко реализовать на любом языке программирования. Посему даже с яваскриптом вопросов не возникло, и все были рады.
Проблемы начались со вторым реле. В нём запросы надо было посылать в виде ASCII строки. А третье реле вообще требовало бинарного ввода на порту. Все программы по миганию гирляндами начали обрастать каким-то нездоровым количеством логики и превращались в костыли.
Было решено реализовать следующую программу:
- У нас есть список моделей различных реле.
- В списке мы указываем тип передачи данных и список команд, доступный для каждой модели.
- Создаём список устройств. Каждое устройство имеет отдельный IP-адрес, имя и название модели.
- На основе этой информации создаётся строка управления для каждой команды, каждого устройства, которая выглядит следующим образом:
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 тысяч лет назад семя рагатское не было полностью уничтожено. Рагаты были закабалены в рабство. И вот среди рабов это семя передается.
Когда свершился Первый Десант Предтеч на Землю, давший начало земной цивилизации, то в Десанте были и рабы (для обеспечения быта). И никто не мог предвидеть, что рабы эти на Земле разбегутся, а потом воссоединятся.
От них и варвары, от них и либерализм, и «мировая закулиса», закабалившая Землю.
Так вот, ЛГБТ выгоден либералам как опора, как социальная база.
Когда наш Второй Десант раздавит «сильных мира земного» (самозванцев, закабаливших Землю), и уничтожит либерализм, то будет уничтожен и ЛГБТ.
Ибо если уничтожается причина, то уничтожается и следствие.
гость
а я не являюсь религиозным человеком, меня волнует, чтобы не было пропаганды таких явлений и искажений истины!
Принцесса Эльза
Если Вы за Истину, то Вам только со мной. Иного пути нет.
Я Принцесса Предтеч, руковожу Цивилизацией, 25 тысячелетий назад породившей нынешних землян.
Злодеяния «мировой закулисы» Земли, и их последователей, воистину перешли все границы.
И поэтому я, Принцесса Предтеч, в конце 2018 года нашла в себе волю и сказала — НАЧАЛО ПОЛОЖЕНО!
И началась подготовка Второго Великого Десанта Предтеч на Землю. Он и освободит землян от нечести той разношерстной.
А сами земляне освободиться не смогут. Ибо невозможно самого себя за волосы вытащить из трясины.
Поэтому и необходимо наше, т.е. инопланетное, вмешательство.
Я уверена, что Вселенский Разум принимает участие в этом.
гость
здравствуйте! Что понимается под восстановлением справедливости? Вот я против ЛГБТ и прочей швали, будут ли уничтожены и обезврежены все представители нетрадиционной ориентации, что есть против Истины Бога-Абсолюта?
13-е привидение
Что же ты забыла сообщить, что сама пропагандируешь лесбиянство?)))
Принцесса Эльза
Никакого лесбиянства я не пропагандирую. Я Амазонка, а не лесбиянка.
Во первых — мы,- иная цивилизация. И нельзя сравнивать «в лоб», как на Земле, и как у нас.
Да, на Планете Предтеч одобряются отношения Ж+М, а также Ж+Ж, которые в основном между Амазонками, так сложилось исторически.
Отношения М+М отвергаются, и недопустимы.
Никаких «лесбийских организаций» у нас нет и не было, нет никаких ЛГБТ, который является сугубо земным извращенным продуктом.
Не пропагандируем мы ни Ж+Ж, ни Ж+М. Однако…
В нашей Цивилизации проявляется особая забота о пАрах, которые растят детей. Это, конечно, тоже не «пропаганда» Ж+М, это ЗАБОТА О врспроизводстве Цивилизации, и о родителях.
На Земле гнобят за то, что растят детей. Отнимают детей у матерей, не помогают родителям…
А мы заботимся о парах. Они у нас на полном обесречении. Мы им квартиры даем, дома…Одна пара в среднем до 10 детей растит!
Гость
*** — это агрессивно настроенные необразованные граждане типа вас.
Принцесса Эльза
Если Вы за Истину, то Вам только со мной. Иного пути нет.
Я Принцесса Предтеч, руковожу Цивилизацией, 25 тысячелетий назад породившей нынешних землян.
Злодеяния «мировой закулисы» Земли, и их последователей, воистину перешли все границы.
И поэтому я, Принцесса Предтеч, в конце 2018 года нашла в себе волю и сказала — НАЧАЛО ПОЛОЖЕНО!
И началась подготовка Второго Великого Десанта Предтеч на Землю. Он и освободит землян от нечести той разношерстной.
А сами земляне освободиться не смогут. Ибо невозможно самого себя за волосы вытащить из трясины.
Поэтому и необходимо наше, т.е. инопланетное, вмешательство.
Я уверена, что Вселенский Разум принимает участие в этом.
Принцесса Эльза
Никакого лесбиянства я не пропагандирую. Я Амазонка, а не лесбиянка.
Во первых — мы,- иная цивилизация. И нельзя сравнивать «в лоб», как на Земле, и как у нас.
Да, на Планете Предтеч одобряются отношения Ж+М, а также Ж+Ж, которые в основном между Амазонками, так сложилось исторически.
Отношения М+М отвергаются, и недопустимы.
Никаких «лесбийских организаций» у нас нет и не было, нет никаких ЛГБТ, который является сугубо земным извращенным продуктом.
Не пропагандируем мы ни Ж+Ж, ни Ж+М. Однако…
В нашей Цивилизации проявляется особая забота о пАрах, которые растят детей. Это, конечно, тоже не «пропаганда» Ж+М, это ЗАБОТА О врспроизводстве Цивилизации, и о родителях.
На Земле гнобят за то, что растят детей. Отнимают детей у матерей, не помогают родителям…
А мы заботимся о парах. Они у нас на полном обесречении. Мы им квартиры даем, дома…Одна пара в среднем до 10 детей растит!