Выполненные решения заданий и задач. 161

7523
Курс: Базы данных 2/2 (ИДДО 2018)  Номер зачетной книжки - 0020184794Контрольная точка №1: Вариант 4ЦельПриобрести практические навыки выполнения запросов.Задача 8Выбрать информацию о книгах, идентификаторы которых начинаются буквой “B”, а кончаются строкой “1342”. Информация о книгах должна включать тип, идентификатор и цену книги.SQL Запрос:SELECT type, title_id, price  FROM titles  WHERE title_id LIKE 'B%1342';Результат выполнения SQL запроса:Задача 30Выбрать все столбцы результата эквисоединения таблиц titles и publishers по идентификатору издателя.Задача 41Определить все города, в которых проживают авторы. Названия городов в результирующей таблице не должны повторяться. Вывести названия городов в порядке убывания.Задача 48Определить города и штаты нахождения издательств, в которых не проживают авторы. (В запросе неявно реализуется операция разности).Задача 60Найти авторов самых дорогих книг, вышедших в США. 
7531
Курсовая работа для студентов МГТУ им. Н.Э. Баумана является обязательной частью основной образовательной программы высшего образования, одной из форм организации учебного процесса. Курсовая работа – вид учебной работы, направленный на развитие практических навыков и умений, а также формирование компетенций обучающихся в процессе выполнения определенных видов заданий, связанных с будущей профессиональной деятельностью. Целью курсовой работы является решение нетривиальных задач дифференциальной геометрии, для получения углубленного и полного понимания предмета. Задачами курсовой работы являются: — Ознакомление с историей изучения неевклидовых геометрий; — Изучение структуры гиперболической геометрии Лобачевского в представлении Пуанкаре; — Ознакомление с эллиптической геометрией Римана; —Описание метрик вышеприведенных геометрий в полугеодезических координатах, сравнение с евклидовой геометрии; — Изучение дифференциальной геометрии и основ тензорного исчисления
7535
Курсовая работа по дисциплине Теория Механизмов и Машин на тему "Проектирование и исследование механизмов буровой установки.  Вариант Г РЕФЕРАТ  В расчетно-пояснительной записке проведены проектирование основного механизма двигателя и определение его закона движения; силовой расчет основного механизма двигателя с учетом динамических нагрузок; проектирование кулачкового механизма привода выхлопного клапана; проектирование зубчатой передачи 1-й ступени коробки скоростей и планетарного механизма лебедки.  Техническое задание Проектирование и исследование механизмов буровой установки.  Буровая установка состоит из двигателя дизеля Д и бурового станка БС, связанных между собой клиноремённой передачей (рис. 1). При бурении движение колонны труб с буровым инструментом на конце осуществляется при помощи вращателя В, связанного с приводным 5 шкивом станка системой зубчатых механизмов (рис. 2). Подъём бурового инструмента и труб из скважины и опускание их в скважину осуществляется при помощи лебёдки Л (рис. 1). Двигатель дизеля представляет собой одноцилиндровую, вертикальную, двухтактную машину, основным механизмом которой является кривошипноползунный (рис. 3). Продолжительность цикла работы двухтактного двигателя соответствует одному обороту его коленчатого вала. Изменение давления газа на поршень в процессе движения поршня представлено индикаторной диаграммой (рис. 4), данные, для построения которой приведены в табл. 2. Момент сопротивления при бурении и момент собственных потерь двигателя не зависит от угла поворота вала. Очистка рабочего цилиндра двигателя от продуктов сгорания производится через выхлопные клапаны, которые принудительно открываются по заданному закону (рис. 5а) посредством кулачкового механизма с качающимся толкателем (рис. 3). Кулачковый вал, кинематически связанный с коленчатым валом посредством зубчатой передачи (не показана на рис. 3), должен в двухтактном двигателе вращаться с той же угловой скоростью, что и коленчатый вал. Выхлопные клапаны начинают открываться, когда коленчатый вал не дошел до нижней мёртвой точки на угол , и окончательно закрываются, когда коленчатый вал повернулся после нижней мёртвой точки на угол  (рис. 5б). Таким образом, работа клапанов строго увязана по фазам с вращением коленчатого вала, а, следовательно, и с движением поршня. 
7536
Курсовая работа по дисциплине Электроника и схемотехника на тему "Разработка схемы управления углом поворота шагового двигателя на ИМС стандартных серий" Введение Схемотехника – область науки и техники изучающая принципы функционирования и технологии проектирования схем электронных устройств. Базисом схемотехнического проектирования являются дискретные электронные компоненты, усилительные, интегрирующие, генераторные и другие аналоговые элементы, цифровые логические элементы, элементы памяти и другие. Главным достоинством цифровой электронной техники является схемотехническая простота каскадов при высокой помехоустойчивости. Это происходит потому что распознавание только двух сильно отличающихся уровней напряжения реализовать значительно проще, чем обработку аналогового сигнала. При этом обеспечивается высокая надежность работы схем даже при наличии больших искажений и помех. Следствие более простых схемотехнических решений – сравнительная простота методов проектирования и технологии производства. С точки зрения функциональных возможностей цифровая электроника характеризуется удобством кодирования и обработки чисел, представленных в двоичном формате. За счет этого она стала физической основой вычислительной техники, что вывело ее на первое место по востребованности среди иных видов электроники. Применение микропроцессорных вычислительных устройств кардинально расширяет возможности обработки и хранения данных, возможности настройки и программирования самой системы. С точки зрения конструктивных и эксплуатационных преимуществ использование цифровой электроники упрощает конструкцию, уменьшает габариты и массу устройств, снижает требования к качеству электропитания и в целом увеличивает надежность работы систем. Значительным преимуществом цифровых схем по сравнению с аналоговыми является простота их изготовления в виде интегральных микросхем. В рамках данной работы вышеуказанные достоинства цифровой схемотехники будут использованы при разработке устройства углом поворота шагового двигателя, с применением методов синтеза цифровых электронных схем, с целью изучения принципов разработки и моделирования схем цифровых электронных устройств. Расчетно-пояснительная записка состоит из введения, исследовательской, конструкторской и технологической частей, заключения и списка литературы. Оформлена на 34 листах в формате А4. Графическая часть включает структурную схему на 1 листе в формате А4, электрическую-принципиальную схему на 1 листе в формате А2, схему алгоритма на 1 листе формата А3. 
7537
Курсовая работа по дисциплине электроника и схемотехника на тему "Разработка схемы электронного будильника на ИМС стандартных серий" Введение Схемотехника – область науки и техники изучающая принципы функционирования и технологии проектирования схем электронных устройств. Базисом схемотехнического проектирования являются дискретные электронные компоненты, усилительные, интегрирующие, генераторные и другие аналоговые элементы, цифровые логические элементы, элементы памяти и другие. Главным достоинством цифровой электронной техники является схемотехническая простота каскадов при высокой помехоустойчивости. Это происходит потому что распознавание только двух сильно отличающихся уровней напряжения реализовать значительно проще, чем обработку аналогового сигнала. При этом обеспечивается высокая надежность работы схем даже при наличии больших искажений и помех. Следствие более простых схемотехнических решений – сравнительная простота методов проектирования и технологии производства. С точки зрения функциональных возможностей цифровая электроника характеризуется удобством кодирования и обработки чисел, представленных в двоичном формате. За счет этого она стала физической основой вычислительной техники, что вывело ее на первое место по востребованности среди иных видов электроники. Применение микропроцессорных вычислительных устройств кардинально расширяет возможности обработки и хранения данных, возможности настройки и программирования самой системы. С точки зрения конструктивных и эксплуатационных преимуществ использование цифровой электроники упрощает конструкцию, уменьшает габариты и массу устройств, снижает требования к качеству электропитания и в целом увеличивает надежность работы систем. Значительным преимуществом цифровых схем по сравнению с аналоговыми является простота их изготовления в виде интегральных микросхем. В рамках данной работы вышеуказанные достоинства цифровой схемотехники будут использованы при разработке электронного будильника, с применением методов синтеза цифровых электронных схем, с целью изучения принципов разработки и моделирования схем цифровых электронных устройств. Расчетно-пояснительная записка состоит из введения, исследовательской, конструкторской и технологической частей, заключения и списка литературы. Оформлена на 34 листах в формате А4. Графическая часть включает структурную схему на 1 листе в формате А4, электрическую-принципиальную на 1 листе в формате А1, схему алгоритма на 1 листе формата А2.
7538
Курсовая работа по курсу: «Оборудование энергоустановок » по теме: «Реакторная установка КЛТ-40С для ПАТЭС: активная зона, система управления и защиты »      Группа Выполнил                                                                                   Консультант                                                                                   2016 год.ОглавлениеВведениеИстория проектаКлассификационные признаки РУ КЛТ-40С, описание, характерные признаки, оборудование и системыАктивная зона РУ КЛТ-40САктивная зона РУ КЛТ-40, прототипа РУ КЛТ-40СРазработка кассетной активной зоны, удовлетворяющей требованиям нераспространенияСостав активной зоны РУ КЛТ-40СТопливоТепловыделяющие сборки (ТВС)Тепловыделяющие элементы (ТВЭЛ)Поглощающие элементы (ПЭЛ)Стержни выгорающего поглотителя (СВП) и рабочие источники нейтронов (РИН)ЗаключениеПриложение. Сравнение гидравлических сопротивлений в активных зонах РУ КЛТ-40 и КЛТ-40ССписок литературы
7541
Курсовая работа по электронике.Руководитель курсовой работы - Брысин А. Н.   Тема «Расчёт усилительного каскада с общим эмиттером »  Исходные данные:Транзистор: ВСP55 Тип транзистора: n-p-nМаксимальная рассеиваемая мощность на коллекторе Pк – 2[Вт]Максимальное напряжение коллектор-база Uкб – 60 [В]Максимальное напряжение коллектор-эмиттер Uкэ – 60 [В] Максимальное напряжение эмиттер-база Uэб– 5 [В] Максимальный ток коллектора Iк – 1[А]Ёмкость коллекторного перехода Ск – 6[пФ]Используемая САПР: «Multisim 12.0.0 » . ЗАДАЧА РАБОТЫ. Рассчитать h – параметры биполярного транзистора, его входное и выходное сопротивления, коэффициент передачи по току, пользуясь входными и выходными характеристиками транзистора. Тип транзистора задается преподавателем. Схема включения транзистора с общим эмиттером (ОЭ). Провести графоаналитический расчет усилительного каскада на заданном типе транзистора, включенного по схеме с ОЭ, с одним источником питания EК и с температурной стабилизацией рабочего режима. Определить параметры элементов схемы усилительного каскада: коэффициенты усиления по току (Кi), напряжению (Кu), мощности (Kp); токи и напряжения в режиме покоя Iбо, Iко, Uбэо, Uкэо; амплитудные значения входных и выходных переменных токов и напряжений в линейном режиме работы усилителя; полезную выходную мощность каскада и его КПД; верхнюю и нижнюю граничные частоты полосы пропускания. 
7547
Курсовое задание по теме «Плоская статика » содержатся задачи для курсовых заданий по плоской статике. Студент по плоской статике получает вариант, состоящий из двух задач.В первой задаче рассматривается равновесие системы сочленённых тел. Каждая из систем статически определима, состоит из трёх тел - стержня весом P и длиной AC = l, блока радиуса R и груза весом Q (в вариантах 19-32 груза нет). На стержень, кроме его веса P, действует сила F в точке D и пара сил с заданным моментом M. В вариантах 19-32 к блоку приложена пара сил с неизвестным моментом L, радиус блока R = 1 м. Требуется определить реакции опор – шарниров A и B. В вариантах 1 – 18 определить вес груза Q. В вариантах 19 – 32 определить пару сил с моментом L.Во второй задаче рассматривается равновесие сочленённой в шарнире C системы из двух стержней под действием плоской системы сил, определяются реакция опор - стержневой опоры B , момент заделки A.Представлены варианты курсовых заданий, примеры выполнения курсовых заданий по теме «Плоская статика » курса «Теоретическая механика » .Студенту выдается один вариант задания для самостоятельного решения, состоящий из двух типовых задач.------------------------------------№13.1AC=l=1 м, AD=CD, P=10 Н, F= 10 Н, M=0,5 Нм------------------------------------ №13.2 q0 = 4 кН /м, M = 8 кН·м
7548
Курсовой проект по теме «Привод цепного транспортера » . Содержит все листы в пдф и Inventor,РПЗ и спецификации Оглавление Техническое задание 1. Кинематический расчет привода 2. Расчет зубчатых  передач 2.1 Выбор варианта редуктора 2.2 Проектный расчет 3. Эскизное проектирование 3.1 Проектные расчеты валов 3.2 Выбор подшипников качения и их установка 4. Конструирование зубчатых колес 4.1 Быстроходная ступень 4.1 Тихоходная ступень 5. Расчет соединений 5.1 Расчет резьбовых соединений крышки редуктора с корпусом 5.2 Расчет резьбовых соединений крышек подшипников с корпусом. 5.3 Расчет  соединений призматическими шпонками. 6. Подбор подшипников качения на заданный ресурс 6.1. Быстроходный вал 6.2. Промежуточный вал 6.3. Тихоходный вал 6.4. Приводной вал 7. Расчет валов на прочность 7.1 Расчет валов на статическую прочность 7.1.1. Быстроходный вал 7.1.2. Промежуточный вал 7.1.3. Тихоходный вал 7.1.4. Приводной вал 7.2 Расчет тихоходного вала на сопротивление усталости 8. Выбор смазочных материалов и системы смазывания 9. Подбор муфты 10. Расчет звездочки 11. Порядок сборки привода, выполнение необходимых регулировочных работ Список литературы
7549
Курсовой проект по ТММ на тему: "Проектирование и исследование одноцилиндрового нереверсивного двухтактного двигателя судовой силовой установки" Вариант "В" Руководитель: С.В. Шаныгин Приложения с расчетами находятся в файлах 1-4 Назначение, функциональная схема, принцип работы Задание ОПМ-48В. Проектирование и исследование механизмов судовой силовой установки. Судовая силовая установка состоит из одноцилиндрового нереверсивного двухтактного двигателя внутреннего сгорания с двумя расходящимися поршнями (1, 2, 3, 4-4”, 5-5”, 6) с воспламенением от сжатия, маховика 7, планетарного реверс-редуктора 8, однорядного редуктора 9, гребного вала с винтом 10. Вал двигателя 1 имеет три колена. Среднее колено ОА через шатун АВ 2 сообщает движение нижнему поршню 3, а крайние два колена ОС и ОС”, расположенные под углом 180 градусов к среднему, сообщает через шатуны 5-5” движение верхнему поршню 6 в сторону, противоположенную движения поршня 3. В процессе работы двигателя поршни 3 и 6 то расходятся, то сближаются. Наименьшее расстояние между поршнями определяется по заданной геометрической степени сжатия  как отношение наибольшего к наименьшему расстоянию между поршнями От коленчатого вала 1 движение передается гребному валу через планетарный редуктор 8 (водило, Z1, Z2, Z3, Z4) с фрикционными муфтами L и M и через одноступенчатый редуктор 9 с цилиндрическими прямозубыми колёсами. Для движения судна вперед включается фрикционная муфта L, связывающая колёса Z1 и Z4, вследствие чего водило и колеса Z1, Z2, Z3, Z4 вращаются как одно целое относительно геометрических осей колеса Z1 и водила. Для движения судна назад включается муфта М и отключается муфта L. При этом колесо Z4 останавливается, а колесо Z1 получает вращение в обратную сторону. Для остановки судна обе муфты отключаются. Закон изменения давления газа в цилиндре двигателя при перемещении поршней представлен индикаторной диаграммой, а данные для её построения приведены в таблице 2. 5 В двухтактном двигателя такого типа при расхождении поршней в цилиндре происходит сгорание впрыснутого топлива и расширение продуктов сгорания, а при сближении их - сжатие воздуха, нужного для сгорания. Схема кулачкового механизма топливного плунжерного насоса изображена на рисунке. Кулачок 11 этого механизма посажен непосредственно на коленчатый вал двигателя. Закон движения плунжера 12 насоса задан графиком ускорений Схема установки рис. 1а рис. 1б рис. 1г рис. 1д Исходные данные Таблица 1. №пп Параметр Обозначение Размерность Зн
7554
# Лабораторная работа № 10 ## Задание Реализовать утилиту вычисления контрольной суммы записей **key-value** хранилища.<br /> > **key-value** хранилище является простейшим хранилищем данных, использующим ключ для доступа к значению. > Такие хранилища используются для хранения изображений, создания специализированных файловых систем, > в качестве кэшей для объектов, а также в системах, спроектированных с прицелом на масштабируемость. ## Иллюстрация Утилита проходит в несколько потоков содежимое исходного хранилаща ```md# db-cat source.db | column family | column family | column family ||---------------|---------------|---------------|| key1 : value1 | key5 : value5 | key7 : value7 ||---------------|---------------|---------------|| key2 : value2 | key6 : value6 | key8 : value8 ||---------------|---------------|---------------|| key3 : value3 |               | key9 : value9 ||---------------|---------------|---------------|| key4 : value4 |               |               ||---------------|---------------|---------------|```и заполняет новое хранилище контрольной суммой для каждой записи ```md# db-cat dbcs-source.db | column family | column family | column family ||---------------|---------------|---------------|| key1 : hash1  | key5 : hash5  | key7 : hash7  ||---------------|---------------|---------------|| key2 : hash2  | key6 : hash6  | key8 : hash8  ||---------------|---------------|---------------|| key3 : hash3  |               | key9 : hash9  ||---------------|---------------|---------------|| key4 : hash4  |               |               ||---------------|---------------|---------------|``` Контрольная сумма вычисляется от значения и от ключа записи:```hash = sha256(key, value)``` ## Требования - Утилита должна поддерживать [**rocksdb**](https://github.com/facebook/rocksdb) с множетсвенным семейством стоблоцов.- Утилита, должна обработаывать следующие опции: `log-level`, `thread-count` и `output`.- В качестве алгоритма хеширования для подсчета контрольной суммы выбрыть **SHA-256**.- При реализации использовать шаблон проектирования **producer-consumer**. ## Пример ```Shell# получение справочной информации$ dbcs --help Usage:   dbcs [options] <path/to/input/storage.db> Options:   --log-level <string>          = "info"|"warning"|"error"                                         = default: "error"                                  --thread-count <number>       =                                 = default: count of logical core   --output <path>               = <path/to/output/storage.db>                                = default: <path/to/input/dbcs-storage.db> # вычисление контрольной суммы$ dbcs /dir/file.db...``` ## Рекомендации - Для обработки параметров командной строки использовать компонент `boost::program_options`.- Для логгирования работы утилиты использовать компонент `boost::log`.- Для вычисления контрольной суммы использовать библиотеку [**PicoSHA2**](https://github.com/okdshin/PicoSHA2).- Для подключения [**Boost**
7556
# Лабораторная работа №2 > Кэш - промежуточный буфер с быстрым доступом, содержащий информацию, которая может быть запрошена с наибольшей вероятностью. Доступ к данным в кэше осуществляется быстрее, чем выборка исходных данных из более медленной памяти или удаленного источника, однако её объём существенно ограничен по сравнению с хранилищем исходных данных. ### Задача Для каждого из вариантов проходов (*прямой*, *обратный* и *случайный*) целочисленного массива провести исследование зависимости времени от размера. Каждое исследование включает в себя серию эксперементов c определенными размерами. Количество экспериментов в серии определяется следующим образом: ```cpp1/2 * cache_sizes['1'] < 2^x < 2^(x+1) < ... < 2^(x+n) < 3/2 * cache_sizes['max']``` ### Пример В примере ниже показано, что для процессора с тремя уровнями кэша (`2mb`, `4mb`, `8mb`)необходимо провести серию из 5 эксперементов. ```cppcache_size['1'] = 2 mb;cache_size['2'] = 4 mb;cache_size['3'] = 8 mb; // 1mb < 2mb < 4mb < 8mb < 12mb``` ### Эксперимент Каждый эксперемент состоит из 3 шагов: ```cpp1. Создание буфера2. Прогревание кэша// <-- время начала эксперемнта3. Циклический проход (1000 итераций)// <-- время окончание эксперемента``` #### Шаг 1 Инициализация буфера может происходит, как с помощью чтения данных из файла в выделенную область памяти,так и с помощью случайного заполнения с использованием генератора случайных чисел. #### Шаг 2 Данный шаг необходимо выполнить для получения репрезентативных данных, т.к. кэш-память еще не заполнена. #### Шаг 3 Для получения времени обхода от размера массива процедуру прохода необходимо многократно повторить (порядка 1000 раз). ### Результаты Ниже представлен формат и пример отчета: ```yamlinvestigation:                                       |  investigaion:  travel_variant: <вариант_прохода>                  |    travel_order: "direction"  experiments:                                       |    experiments:  - experiment:                                      |    - experiment:      number:                                        |        number: 1      input_dаta:                                    |        input_dаta:        buffer_size: <размер_буфера>                 |          buffer_size: "1mb"      results:                                       |        results:        duration: <продолжительность>                |          duration: "1ns"  - experiment:                                      |    - experiment:      number: <номер_эксперимента>                   |        number: 2      input_dаta:                                    |        input_dаta:        buffer_size: <размер_буфера>                 |          buffer_size: "2mb"      results:                                       |        results:        duration: <продолжительность>                |          duration: "2ns"                                                     |investigation:                                       |  investigation:...            
7557
# Лабораторная работа №3 ### Задание **SharedPtr** реализует подсчет ссылок на ресурс. Ресурс освободится тогда, когда счетчик ссылок на него будет равен 0. Как видно, система реализует одно из основных правил сборщика мусора.Многопоточное программирование сложно представить без использования класса `shared_ptr`. Например, класс `scoped_refptr` (аналог `std::shared_ptr`) используется в Chromium [32,753 раз](https://cs.chromium.org/search/?q=scoped_refptr&sq=package:chromium&type=cs). Чтобы лучше усвоить и понять принцип работы этого "умного" указателя, необходимо его реализовать своими руками. Реализуйте шаблон класса `SharedPtr`. Для счетчика ссылок используйте переменную класса `std::atomic_uint`. Интерфейс работы с этим классом аналогичен работе с переменной типа `unsigned int`, т.е. к нему применимы операции префиксного инкремента и декремента. ```cpptemplate <typename T>class SharedPtr {public:    SharedPtr();    SharedPtr(T* ptr);    SharedPtr(const SharedPtr& r);    SharedPtr(SharedPtr&& r);    ~SharedPtr();    auto opeartor=(const SharedPtr& r) -> SharedPtr&;    auto opeartor=(SharedPtr&& r) -> SharedPtr&;     // проверяет, указывает ли указатель на объект    operator bool() const;    auto operator*() const -> T&;    auto operator->() const -> T*;        auto get() -> T*;    void reset();    void reset(T* ptr);    void swap(SharedPtr& r);    // возвращает количество объектов SharedPtr, которые ссылаются на тот же управляемый объект    auto use_count() const -> size_t;};```
7558
# Лабораторная работа №4 Лабораторная работа посвящена изучению работы с файловой системой на языке **C++**. В стандарте **C++17** появилась библиотека для работы с [файловой системой](https://en.cppreference.com/w/cpp/filesystem). Но так как на данный момент еще не все компиляторы поддерживают новейший стандарт **C++** в этой лабораторный используется библиотека **boost::filesystem**, которая была взята за основу при разработке стандарта. ## Задание Использовать библиотеку **boost::filesystem** для анализа директории с [FTP](https://ru.wikipedia.org/wiki/FTP)-файлами, содержащими финансовую информацию. Подробная инструкция по библиотеке **boost::filesystem** есть, например, [тут](https://www.boost.org/doc.../doc/tutorial.html). Структура анализируемой директории в общем случае может имеет вид: ```Shellftp                                         # корневой каталог ftp├── ib                                      # каталог, содержащий файлы от брокера ib     ├── balance_00001234_20181001.old.txt  # файлы финансовой отчётности в старом формате      ├── balance_00001234_20181001.txt      # файлы финансовой отчётночти в новом формате      ├── balance_00001346_20181001.txt           ├── ...          └── balance_00001346_20181018.txt      ├── bcs                                     # каталог, содержащий файлы от брокера bcs     ├── balance_12341234_20181001.txt     └── ...     ├── otkritie                                # каталог, содержащий файлы от брокера otkritie     └── ...   └── docs                                    # каталог, содержащий какие-то произвольные файлы     ├── readme.txt          └── report.doc ``` Файлы, содержащие финансовую информацию, имеют имя в определенном формате:`balance_XXXXXXXX_YYYYMMDD.txt`, где  | Поле | Описание || ------ | ------ || `balance` | тип файла || `XXXXXXXX` | 8-и значный номер счёта || `YYYYMMDD` | дата, где `YYYY`-год, `MM`-месяц и `DD`-день || `.txt` | расширение файла | ## Необходимо - в проекте, созданном в задании 1, создать файл `main.cpp` и подключить библиотеку **boost::filesystem** (`<boost/filesystem.hpp>`);- считать из аргументов командной строки `args` функции `main` путь к анализируемой директории `path_to_ftp`. Если аргумент отсутствует, то по умолчанию программа должна анализировать директорию, в которой она находится;- организовать итерацию по всем файлам и вложенным директориям, включая символьные ссылки, с целью поиска всех файлов, содержащих финансовую информацию;- файлы, имеющие имя, отличное от описанного формата, необходимо игнорировать;- файлы, содержищие финансовую информацию, но имеющие в конце постфикс `.old.txt`, необходимо игнорировать;- программа должна вывести на экран список всех обнаруженных финансовых файлов в формате: ```Shellib balance_00001234_20181001.txtib balance_00001234_20181002.txtib balance_00001234_20181003.txtbcs balance_00001234_20181001.txtbcs balance_00001234_20181005.txt...``` - также она должна вывести общее количество файлов по каждому обнаруженно
7559
# Лабораторная работа №5 ## Задание 1Реализовать некопируемый перемещаемый шаблон класса **stack** с методами `pop`, `push`, `head`. ```cpptemplate <typename T>class stack{public:  void push(T&& value);  void push(const T& value);  void pop();  const T& head() const;};```⚠️ *Стандартными контейнерами пользоваться **запрещено**.* ## Задание 2Реализовать некопируемый перемещаемый шаблон класса **stack** для некопируемых перемещаемых типов с методами:* `push_emplace`, принимающего те же аргументы, что и конструктор для `T`, где `T` - пареметр шаблона;* `head`, возвращающего ссылку на верхушку стека;* `pop`, выполняющего снятие элемента с верхушки стека.```cpptemplate <typename T>class stack{public:  template <typename ... Args>  void push_emplace(Args&&... value);  void push(T&& value);  const T& head() const;  T pop();};```⚠️ *Стандартными контейнерами пользоваться **запрещено**.* ## Задание 3Реализовать **unit-test**'ы с использованием фреймворка **Google Test** для реализованных шаблонов в заданиях 1 и 2. ## Рекомендации ._lab5_stack-master 220 b ._.DS_Store 120 b ._.clang-format 212 b ._.gitignore 212 b ._.gitmodules 212 b ._.travis.yml 212 b ._AUTHORS 212 b ._CMakeLists.txt 212 b ._CONTRIBUTING.md 212 b ._Dockerfile 212 b ._LICENSE 212 b ._README.md 268 b ._settings.yml 212 b ._lab-05-stack.iml 212 b ._misc.xml 212 b ._modules.xml 212 b ._vcs.xml 212 b ._workspace.xml 212 b ._CMakeCache.txt 212 b ._CMakeFiles 210 b ._clion-environment.txt 212 b ._clion-log.txt 212 b ._cmake.check_cache 212 b ._FindGcov.cmake 212 b ._FindLcov.cmake 212 b ._Findcodecov.cmake 212 b ._zad1.hpp 268 b ._zad2.hpp 368 b ._checks.sh 212 b ._coverage.sh 212 b ._duplication.sh 212 b ._genenv.sh 212 b ._tests.sh 212 b ._source1.cpp 212 b ._source2.cpp 212 b ._test.cpp 212 b ._gate 210 b ._polly 210 b lab5_stack-master .DS_Store 8 Kb .clang-format 418 b .github settings.yml 2,68 Kb .gitignore 270 b .gitmodules 167 b .idea lab-05-stack.iml 97 b misc.xml 240 b modules.xml 276 b vcs.xml 180 bПоказать весь список kekovLol (- из 5) 30 мая 2021 в 19:25
7560
# Лабораторная работа №7## ЗаданиеРеализовать синхронный сервер с использованием [Boost.Asio](https://www.boost.org/doc...html/boost_asio.html). > **Boost.Asio** - кросс-платформенная **С++** библиотека для программирования сетевых приложений и других низкоуровневых программ ввода/вывода, которая абстрагирует понятия **input** и **output**, что позволяет делать их синхронными или асинхронными:```cppread(stream, buffer [, extra options]);async_read(stream, buffer [, extra options], handler);write(stream, buffer [, extra options]);async_write(stream, buffer [, extra options], handler);```#### Требуется: 1. Реализовать синхронный сервер, который должен содержать минимум два потока: один - для прослушивания новых клиентов, другой - для обработки существующих. Нельзя использовать один поток, так как ожидание нового клиента является блокирующей операцией.2. На сервере требуется предусмотреть следующее: - клиент заходит на сервер с именем пользователя (без пароля);- все соединения инициируются клиентом, где клиент запрашивает ответ от сервера;- запросы и ответы на них заканчиваются символом `'n'`; - сервер отключает любого клиента, который не отвечает (не пингуется) в течение **5** секунд;- клиент может делать следующие запросы: получить список всех подключенных клиентов и пинговаться, где в ответе сервера будет либо `ping_ok`, либо `client_list_chaned` (в последнем случае клиент повторно запрашивает список подключенных клиентов);- взаимодействие между клиентом и сервером осуществляется следующим образом: 3. Тестирование сервера выполнить с помощью утилиты **curl** (документацию с примерами можно найти [здесь](https://ec.haxx.se/cmdline-options.html)).4. При подключении клиента к серверу выполнить запись в **Log** параметров подключения (с временной меткой).5. Для логгирования использовать библиотеку `boost::log` (документацию с примерами можно найти [здесь](https://www.boost.org/doc...log.tutorial.trivial)).6. Обеспечить ротацию лог-файлов по размеру. ## Рекомендации - Все синхронные функции имеют перегрузки выбрасывающие исключения в результате ошибки или возвращающие код ошибки с использованием `boost::system::system_error`:```cppsync_func(arg_1, arg_2 ... arg_n);          // throws exceptionboost::system::error_code error;sync_func(arg_1, arg_2, ..., arg_n, error); // returns error code```Например:```cppusing boost::asio;const ip::tcp::endpoint endpoint;ip::tcp::socket socket{service};socket.connect(endpoint);boost::system::error_code error;socket.connect(endpoint, error);```В данном фрагменте кода `socket.connect(endpoint)` выбрасывает исключение в случае ошибки, а `socket.connect(endpoint, error)` возвращает код ошибки. В синхронных функциях вы можете использовать как исключения так и коды ошибок, но пользуйтесь чем-то одним. Все коды ошибок `Boost.Asio` находятся в пространстве имен `boost::asio::error`. - Синхронное чтение и запись в **TCP** сокет, например, может быть реализовано следующим образом:```cppconst ip::tcp::endpoint endpoint{ip::ad
7561
# Лабораторная работа №9 ## Задание Реализовать краулера с использованием шаблона *producer-consumer*.> Краулер — программа, предназначенная для обхода страниц Интернета с целью получения из них необходимой информации. ### Требования1. Программе на вход подаются следующие аргументы:    * адрес HTML страницы `--url`;    * глубина поиска по странице `--depth`;    * количество потоков для скачивания страниц `--network_threads`;    * количество потоков для обработки страниц `--parser_threads`;    * путь до выходного файла `--output`.1. Программа должна рекурсивно обойти все ссылки встречающиеся на странице. Начальная страница обхода передается аргументом командной строки `url`. Глубина обхода равна `depth`.1. Программа должна записать в выходной файл `output` все ссылки на изображения, которые встречаются при обходе страниц.1. Необходимо использовать шаблон producer-consumer. Количество `producer` задается аргументом командной строки `network_threads`, а количество `consumer` - аргументом `parser_threads`.1. Для процессинга страниц необходимо использовать [gumbo-parser](https://github.com/google/gumbo-parser).1. Для скачивания HTML страниц необходимо использовать [Boost::Beast](https://github.com/boostorg/beast).1. Для обработки параметров командной строки необходимо использовать компонент `boost::program_options`. ## Шаблон producer-consumerШаблон "producer-consumer" устроен по следующей схеме:![producer-consumer](./images/producer-consumer.svg) > Этот шаблон часто применяется в высоконагруженных системах, распределенных вычислениях. Почти всегда можно абстрагировать задачу и выделить в ней части, которые делают некоторый препроцессинг, и части, которые занимаются окончательной обработкой данных на основе этого препроцессинга. Этот шаблон - это обобщение принципа подобного разделения. **Producer**, или "поставщик", — это некоторый поток, который генерирует "задания" и складывает их в очередь. **Consumer**, или "потребитель", — это поток, который обрабатывает "задачи" из очереди. В качестве **задачи** может выступать любая сущность, требующая дополнительной обработки. В текущем случае, это HTML страница. ## Рекомендации1. Используйте пул потоков. Например, [ThreadPool](https://github.com/progschj/ThreadPool).1. Все необходимые примеры по работе с [gumbo-parser](https://github.com/google/gumbo-parser) есть по [ссылке](https://github.com/google...ee/master/examples).1. При решении задачи следует использовать шаблон procuder-consumer два раза, по следующей схеме:![scheme](./images/scheme.svg)