Автор:
Самый Зелёный
·
Опубликовано
· Обновлено
«Мороз и солнце; день чудесный!» — Пушкин писал эти строки, не зная о том, что на нас надвигается «Итоговое сочинение», и морозного декабрьского утра мы ждем не с радостью и полудремой, а с содроганием и тоской. Но ничего страшного, Многомудрый Литрекон всех перемудрит и заготовит аргументы по направлению «Цивилизация и технологии — спасение, вызов или трагедия?» для итогового сочинения 2021-2022 года. В этой подборке каждый может найти оригинальные литературные примеры и вдохновиться на создание своего шедевра, только в жанре итогового сочинения. Если их нужно дополнить, напишите в комментариях, и Литрекон все сделает в лучшем виде. Приятного просвещения! Кстати, не забудьте взглянуть на темы и направления этого года, а также на пример сочинения по данному направлению.
- Технический прогресс — зло или благо? Н.Г. Чернышевский в романе «Что делать?» доказал, что развитие техники является благом для общества. Благодаря появлению и совершенствованию швейных машин героини произведения смогли зарабатывать на жизнь честным трудом и избежать торговли собой. Вера спаслась от брака по расчету и стала обеспечивать себя сама. Она открыла швейную мастерскую, в которой все работницы были пайщицами одного дела и имели мотивацию для его развития. Этот бизнес помог многим девушкам избавиться от зависимости в семье и в отношениях и жить благополучно. Если бы техника не дошла до такого уровня автоматизации процессов, женщины по-прежнему не могли бы трудиться и оказались бы во власти домашней тирании.
- Чем опасен технический прогресс? Е. Замятин в антиутопии «Мы» показал опасность прогресса. Технические новшества в обществе будущего могут поспособствовать полному порабощению человека в государстве. Тотальный контроль, машины для избавления от фантазии и свободы воли, изощренные пытки, средства для слежки и шантажа — все это сковывает личность и лишает ее всех прав. Главный герой Д-503 в финале был лишен воли и способности мыслить самостоятельно, а потому предал свои оппозиционные идеи и стал лишь винтиком в государственной машине. То есть у человека отняли его личность и свели его значение до базовой функции. Это не было бы возможно без научного прогресса и технической революции, которые были направлены против своих создателей.
- «Прогресс состоит во всё большем и большем преобладании разума над животным законом борьбы». Л.Н. Толстой в романе-эпопее «Война и мир» осудил войну и на убедительных примерах доказал, что прогресс в человеческом обществе предполагает отказ от животной агрессии борьбы. Мы можем сравнить мирные и военные картины быта и нравов народа и увидим процветание и разруху, жизнь и смерть, счастье и горе. Как можно отказаться от одного и выбрать второе? Вооруженные конфликты отнимают у общества лучших людей вроде Андрея Болконского и Пети Ростова. Они приносят страдания и увечья всем семьям, ведь даже у Курагиных произошло трагическое событие: Анатоль потерял ногу на Бородинском поле. Может ли мир развиваться в таких условиях? Нет. За французской армией тянется вереница пожаров, потерь, разрушений. И в этой борьбе нет победителя, все лишь пострадали от нее. Поэтому война и прогресс несовместимы.
- Что такое технический прогресс? М.А. Шолохов в романе «Поднятая целина» показал технический прогресс в деле: объединение людей в колхоз позволило им скинуться и приобрести трактор. Техника высвободила бы десятки рабочих рук и увеличила бы объемы сельскохозяйственного производства. Если раньше все казаки от мала до велика были задействованы в пахоте и сборе урожая и получали столько денег, сколько хватало только на выживание, то теперь люди могли освободить время для развития и обучения, чтобы сделать свой труд более качественным и результативным. Так, молодая девушка Варя теперь могла позволить себе учебу и работу на себя. Прошли времена ночного бдения на полях, появление техники ознаменовало новый этап в развитии сельского хозяйства.
- Как развитие технологий влияет на общество? К. Булычев в повести «Приключения Алисы» рассказывает о фантастическом мире научного прогресса. Здесь люди запросто летают в космос и путешествуют по разным планетам. Алиса и ее отец полетели в космическую экспедицию, чтобы привезти животных с разных планет. Они занимаются благими делами, используя новые знания. Благодаря прогрессу герои могут охранять редких животных в любой точке галактики. Однако научные знания становятся не только достоянием каждого, но и причиной преступлений. Например, космические пираты охотятся за формулой абсолютного топлива и используют новые достижения цивилизации для незаконного обогащения. Таким образом, наука может подарить человечеству широкие возможности, если относиться к открытиям обдуманно и бережно, но она же дает новое оружие тем, кто настроен агрессивно и враждебно. Технологии дают возможности, но как их использовать, решает только сам человек, и в этом смысле они никак не влияют на нашу истинную природу.
- Верно ли, что наука всесильна? Наука не всесильна и нельзя с ее помощью сделать все, что угодно, презрев законы природы. Об этом говорит М. А. Булгаков в повести «Собачье сердце». Шариков, которого известный ученый сделал из собаки, настоящим человеком все равно не становится и продолжает бросаться на кошек. Несмотря на старания профессора Преображенского, эксперимент оказался неудачным, и пришлось все вернуть обратно. Кроме темы науки, здесь проводится аналогия с только что появившимся советским государством, у которого был схожий подход: убрать все и переделать по своему усмотрению. И это также не принесло результата. Наука может ошибиться, но важно признать свои ошибки вовремя, как и сделал герой.
- Всегда ли люди понимают и принимают прогресс? К сожалению, лили очень консервативны и не всегда могут понять и принять прогресс. Например, доктор Сальватор из повести А. Р. Беляева «Человек-амфибия» спас человека, обогатил его уникальными способностями, но от общества получил лишь осуждение и непонимание за свой подвиг. Доктор пытался вывести живых существ, приспособленных к любым условиям. Он пересадил жабры больному мальчику Ихтиандру, и тот стал человеком-амфибией, который мог жить в воде и на суше. Окружающие не могли понять гуманитарных стремлений доктора. Педро Зурита хотел поймать Ихтиандра и заставить доставать со дна жемчуг. Его не беспокоят никакие научные прорывы, главное – нажива, прибыль, которую может принести Ихтиандр. Конец истории печален: доктор Сальватор в тюрьме, а Ихтиандр в изгнании. Учёные могут быть не поняты и не приняты обществом, несмотря на высокие цели их исследований. Подчас люди попросту оказываются неготовыми к научным прорывам.
- Может ли научный прогресс привести к катастрофе? М.А. Булгаков, «Роковые яйца». Результаты научных открытий могут быть непредсказуемы и даже опасны. Об этом рассказывает М. А. Булгаков в повести «Роковые яйца». Профессор Персиков придумал луч, который провоцировал бурный рост, но повышал агрессию живых существ. Провести качественные исследования ему не дали, изобретение попало в руки заведующего совхоза Рокка. Он решил вывести устойчивых к болезням цыплят с помощью особого луча, не задумываясь о последствиях. Ещё и куриные яйца перепутали со змеиными. И вывелись не свирепые цыплята, а анаконды и другие рептилии. Только к зиме этих существ победили, и то благодаря морозу. Фантастическая история показывает, что наука требует тщательного и аккуратного отношения, с применением открытий нельзя торопиться, иначе может произойти катастрофа.
- Ложная и истинная наука, определяющая ход прогресса. Ироническое отношение к науке показал В. Пелевин в романе «Искусство лёгких касаний». Вторая часть романа, одноименная названию, представляет собой рецензию на книгу историка Голгофского. Этот ученый развивает теорию о существовании особенных слов, которые могут менять сознание целых народов. Он считает, например, что особые слова, которые распространяются в соцсетях, развивают излишнюю толерантность. Теория звучит как крайне сомнительная, однако такое произведение публикуют, оценивают и анализируют. Здесь поднимается вопрос подлинной науки и ложной. Ради собственного продвижения некоторые учёные занимаются не исследованиями, а скандалами. И это одна из проблем современной науки. Ведь новая мысль порождает направление прогресса, определяет будущее, а лженаука искажает его, ведет человечество по ложному пути.
- Почему люди отстают от цивилизации? К сожалению, многие люди не хотят развиваться и замыкаются в собственном скудоумии. Им куда проще плыть по течению и пользоваться достижениями других. Например, Митрофанушка, герой комедии Д. И. Фонвизина «Недоросль», является символом невежества и глупости. Его обучение лишь только для вида, он ничего не знает и не запоминает. Такое постижение науки абсолютно бессмысленно, оно высмеивается и порицается автором. «Не хочу учиться, а хочу жениться,» – говорит Митрофан. Научное знание крайне важно, его постижение не может восприниматься как тяжкая обязанность, оно делает людей гуманнее – об этом говорит автор, показывая Митрофанушку жалким и ничтожным тираном. Главная проблема, которая тормозит развитие мира, заключается в нежелании людей учиться и идти в ногу со временем. Такие Митрофанушки, которые замыкаются в своем невежестве, не подставляют ножку прогрессу.
- Как обучение людей способствует техническому прогрессу? Евгений Базаров, герой романа И. С. Тургенева «Отцы и дети», занимается естественными науками. Причем он предпочитает не теоретические, а практические знания. По мнению Базарова, наука должна быть применима к жизни, иначе она ничего не стоит. Несмотря на свои радикальные воззрения, Евгений действительно постиг медицину, чтобы лечить людей, приносить пользу обществу. Приехав в родителям, он начал помогать местным жителям и исцелять их современными методами. Его образование нашло применение в жизни: он смог поднять уровень медицины в своем регионе. Наука должна служить каждому человеку. Этот подход в современном обществе не вызывает удивления, ведь главный запрос в каждом обучении – применимость знаний в жизни. Чем больше мы учимся, тем лучше и масштабнее будет наш вклад в развитие прогресса.
- Как новые технологии помогают решать глобальные мировые проблемы? А. Платонов в рассказе «Песчаная учительница» показал практическое применение новых технологий и знаний в решении глобальных проблем. Главная героиня приехала в пустыню, чтобы преподавать в школе, но со временем убедилась, что местным жителям не до просвещения. Они не жили, а выживали, потому что на их родине не было воды, еды, дров — ничего для создания быта. Дома и скудные посевы постоянно заносил песок, и люди только и делали, что откапывали свои жилища. Тогда Мария Нарышкина решила изучить вопрос с научной точки зрения и переделать программу. Она начала читать лекции на темы, близкие обитателям пустыни. В школу потянулись и взрослые. Общими усилиями герои посадили деревья, оградили поселок от песка, нашли способ получать воду. Такова сила прогресса: человек может преобразить мир и сделать место, непригодное для жилья, плодородным и процветающим.
- Для чего необходим прогресс? Наука должна служить обществу и улучшать жизнь людей, особенно это касается медицины. Рассказ А. П. Чехова «Хирургия» показывает, насколько важны знания для врача. Фельдшер Курятин измучил своего пациента, дьяка Вонмигласова, пытаясь вырвать ему зуб. У пациентов в сельской местности нет выбора, поэтому им остаётся только терпеть. Однако врач как человек, который напрямую влияет на состояние человека, обязан постигать медицинскую науку как можно более тщательно. К сожалению, Курятин об этом не заботился, считая, что и так сойдёт. В другом рассказе автора под названием «Лошадиная фамилия» врач оказался профессионалом и помог своему пациенту вылечиться. Пока больной искал народного целителя и готов был терпеть боль вплоть до встречи с магом, экспертная помощь была близко и могла избавить его от недуга. Это и есть главная функция прогресса — облегчение и усовершенствование жизни людей.
- Может ли увлечение новыми технологиями и научными достижениями быть во вред человеку? К сожалению, люди часто изучают какую-либо сферу мысли просто для того, чтобы показаться значительнее, чем они есть на самом деле. Наука для Евгения Онегина, героя одноименного романа А. С. Пушкина, является способом выглядеть модным и просвещенным. Именно по этой причине Онегин «Бранил Гомера, Феокрита, зато читал Адама Смита и был глубокий эконом». Онегин считал себя образованным человеком, но в реальности все науки знал он поверхностно, только чтобы поддержать светскую беседу. Единственная наука, которую Евгений постиг, была «наука страсти нежной» – герой был умелым соблазнителем, однако пользы это ему не принесло. Наука ценна сама по себе, она необходима, чтобы менять жизнь человечества к лучшему, а не ради того, чтобы казаться лучше. И если знания человека поверхностны и выставляются напоказ только ради одобрения других, ему обучение на пользу не пошло.
- Какие люди способны стать двигателями прогресса? Андрей Штольц, герой романа И. А. Гончарова «Обломов», стремился к деятельности, хотел принести пользу обществу. Это невозможно без образования, научных знаний. И Андрей жадно учился, трудился над тем, чтоб получить как можно больше информации и навыков в разных сферах. Штольц стал образованным человеком и смог достичь успеха. Благодаря трудолюбию и тяге к знаниям герой занимает высокое положение в обществе и получает дворянский чин. Несмотря на то, что современный человек уже не стремится быть дворянином, не изменилось одно: наука и знания (если они применяются на практике) помогут поменять мир к лучшему, подарят независимость. Андрей открыл свое дело и сделал нашу страну более передовой, ведь развил международную торговлю. Такие деятельные, умные и целеустремленные люди, как он, двигают мир вперед.
Наука – это то, что двигает человеческое общество вперед. Образование и технический прогресс прославляли многие писатели XVII-XIX веков. Однако в XX-XXI веках философы, литераторы и общественные деятели задумались об обратной стороне цивилизации – о том, какие могут быть опасные последствия тех или иных изобретений. Мы поможем вам вспомнить аргументы из литературы на эту тему. А если нужных здесь нет, напишите Многомудрому Литрекону, он добавит еще.
Спасибо за Ваши комментарии! Вот отдельная подборка аргументов по книгам из них.
Метки: 11 классаргумент из литературыдекабрьское сочинениеитоговое сочинениеподборкапример из литературысписокЦивилизация и технологии
Читайте также:
Написание сочинения-рассуждения 9.2 ОГЭ по русскому языку. Памятка для учащихся.
В задании 9.2. предлагается написать сочинение на основе прочитанного текста.
Формулировка задания:
Напишите сочинение-рассуждение. Объясните, как Вы понимаете смысл финала текста: «Письма, пользуясь её слепотой, вынули не из шкатулки – их вынули из её души, и теперь ослепла и оглохла не только она, но и её душа…»
Приведите в сочинении два аргумента из прочитанного текста, подтверждающих Ваши рассуждения.
Структура сочинения-рассуждения 9.2. ОГЭ по русскому языку:
1. Вступление. Тезис.
2. Аргумент – пример-иллюстрация из теста 1 + комментарий.
3. Аргумент – пример-иллюстрация из текста 2 + комментарий.
4. Заключение (по тезису).
ТЕЗИС — утверждение. Спорное суждение. Одно-два предложения. Мысль, требующая доказательства: «На мой взгляд, написать сочинение-рассуждение 9.2 очень легко», — это тезис, который, безусловно, требует доказательства.
Как сформулировать тезис для сочинения 9.2? Отталкиваемся от задания: Объясните, как Вы понимаете смысл финала текста: «Письма, пользуясь её слепотой, вынули не из шкатулки – их вынули из её души, и теперь ослепла и оглохла не только она, но и её душа…». При написании вступления можно использовать следующие речевые клише:
- Смысл последних строк текста говорит нам о том, что…
- Текст заканчивается словами: «…». На мой взгляд, речь идет о том, что (как и др.) …
- Я считаю, что мысль автора данного текста, выраженная в выделенном фрагменте, заключается в том, что …
- Автор данного текста привлекает читателя к размышлению над вопросом…
- По моему мнению, в указанном фрагменте выражена главная мысль текста, которая заключается в следующем: …
- В этом отрывке автор говорит о том, что…
- Смысл данного отрывка я понимаю так: …
- В выделенной фразе автор выражает мысль о том, что…
Не лишним будет употребление вводных слов: я думаю, я считаю, на мой взгляд, по моему мнению, мне кажется, я убеждён и т.д. Но не злоупотребляйте ими и помните, что вводные слова всегда выделяются запятыми.
А теперь рассмотрим разные варианты вступлений:
Пример тезиса: На мой взгляд, для Анны Федотовны фронтовые письма были больше, чем просто письмами, они были единственной памятью о сыне, не вернувшемся с войны, поэтому её душа опустела с их утратой.
АРГУМЕНТ — довод, приводимый в качестве доказательства тезиса. Аргументов в сочинении 15.2. должно быть два, они должны быть из прочитанного текста.
КОММЕНТАРИЙ — пояснение довода, аргумента. Является обязательным структурным элементом доказательной части любого сочинения-рассуждения.
Примеры-иллюстрации – это отрывки текста, которые нужно объяснить и интерпретировать.
Пример аргументов и комментариев к ним:
Аргумент 1: В предложении № 17 автор называет письма «бесценными».
Комментарий: Данный эпитет употребляется вместе со словом «листочками», имеющим уменьшительно-ласкательный суффикс. Такое контрастное сочетание двух слов позволяет нам понять важность этих самых «листочков» для пожилой женщины.
Аргумент 2: В предложении 53 душа старушки сравнивается со шкатулкой.
Комментарий: В шкатулках люди обычно хранят самое ценное: драгоценности, деньги. Но для героини важней были ценности не материальные, а духовные. Она хранила в шкатулке письма, словно в своей душе («Письма, пользуясь её слепотой, вынули не из шкатулки – их вынули из её души»). С помощью данной метафоры автор показывает всю значимость, которую имели письма для старушки.
Оформлять примеры в сочинении можно 3-мя способами:
1) цитировать предложение (если оно не очень длинное), при этом знаки препинания расставляются так же, как и в предложении с прямой речью, или же предложение заключается в скобки.
В некоторых случаях цитировать можно не всё предложение, а часть его, ставя на месте пропущенных слов многоточие.
2) указывать номера предложений без цитирования (это делается в том случае, если предложение очень длинное). 3) для того чтобы включение примеров не нарушало требование связности, можно использовать следующие речевые клише:
• Чтобы подтвердить сказанное, обратимся к … предложению текста.
• Подтвердить данный аргумент можно примером из …. предложения текста.
• Справедливость этого вывода можно доказать на примере … предложения.
• В подтверждение собственных выводов приведу пример из … предложения прочитанного мною текста.
• Предложение № … подтверждает мысль о том, что … .
ЗАКЛЮЧЕНИЕ — вывод по тезису, умозаключение. Должно соотноситься с утверждением, высказанным в начале. Легче всего начать заключение с вводных слов и конструкций: Подводя итог всему вышесказанному, …, Проанализировав два аргумента, можно прийти к выводу, что …, Таким образом, можно сделать вывод, что… и т.д.
Пример заключения: Подводя итог всему вышесказанному, можно сделать вывод, что фронтовые письма были для Анны Федотовны настоящим сокровищем, они представляли для нее большую духовную ценность, поэтому, лишившись их, пожилая женщина словно лишилась части своей души.
Как найти аргументы в тексте? Поскольку собственных аргументов здесь выдумывать не нужно, все, что Вам требуется, — проанализировать текст, при необходимости внимательно его перечитав, и найти ключевые слова, предложения, мысли, высказанные автором текста с целью сделать свои слова более убедительными. Аргументы — это авторские доказательства. А затем использовать шаблонную конструкцию для оформления своего аргумента: Во-первых, в предложении № … говорится о … (употребляется …, используется такое средство как …). Это свидетельствует о том, что …, (это позволяет судить о том, что …, это говорит о том, что …).
Пример сочинения-рассуждения к заданию 15.2 по тексту Б.Л. Васильева «Письмо от сына».
Финальные строки текста имеют переносное значение. Я понимаю их так: человека можно лишить смысла жизни, если бездушно украсть у него самое священное и дорогое. Попробую доказать справедливость своего суждения.
Во время войны Анна Федотовна потеряла своего единственного сына. От горя и слез, нервного переутомления и тяжести пережитого женщина ослепла. На память о сыне у неё осталось единственное письмо, полученное с фронта. Анна Федотовна очень дорожила этим письмом, что подтверждает предложение № 14. Каждый вечер перед сном она брала его в руки и вспоминала навечно запечатлённые в сердце строки. Для неё это было настоящее вечернее «священнодействие», которое придавало ей силы и поддерживало в ней жизнь.
Но однажды Анна Федотовна столкнулась с неосознанной детской жестокостью и равнодушием. Это доказывают предложения № 24 и 27. Старательные пионеры пришли к ней в дом и, воспользовавшись доверием хозяйки, украли ее реликвию. То, что было смыслом и содержанием жизни старой женщины, оказалось для них обычным музейным экспонатом. Анна Федотовна потеряла не только память о сыне, но и смысл жизни. Но есть ещё одна причина, по которой душа героини ослепла и оглохла. Женщина, пережившая войну и смерть сына, не смогла пережить и жестокость нашего времени — непонимание, цинизм и равнодушие к чужому горю и памяти.
Таким образом, героиня текста ослепла дважды: в первый раз — потеряв сына, а во второй раз – потеряв смысл жизни и веру в людей.
В последние годы все большую популярность у разработчиков завоевывает структурное логирование. Поэтому неудивительно, что Microsoft добавило его поддержку в пакет Microsoft.Extensions.Logging, являющийся составляющей частью .Net Core/.Net 5/.Net 6. В этой статье я хотел бы рассмотреть, как мы можем использовать структурное логирование с данным пакетом и показать идею, как мы можем расширить его с использованием новых возможностей C# 10.
Первоначальная настройка
Как известно, Microsoft.Extensions.Logging представляет собой фасад, к которому мы можем подключать различные нижележащие провайдеры логирования. В данной статье я буду использовать Serilog в качестве такого провайдера и настрою его для вывода логов на консоль в формате JSON.
В качестве примера мы будем рассматривать простое консольное приложение (ссылка на GitHub), в котором конфигурация логирования имеет следующий вид:
// Конфигурируем Serilog
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Information()
.WriteTo.Console(new CompactJsonFormatter())
.CreateLogger();
// Регистрируем Serilog при создании Microsoft.Extensions.Logging.LoggerFactory
using var loggerFactory = LoggerFactory.Create(
builder => builder.AddSerilog(dispose: true));
// Создаем экземпляр ILogger при помощи фабрики
var logger = loggerFactory.CreateLogger<Program>(); Также, создадим две записи, которые будем использовать в дальнейших примерах:
public record Point(double X, double Y);
public record Segment(Point Start, Point End)
{
public double GetLength()
{
var dx = Start.X - End.X;
var dy = Start.Y - End.Y;
return Math.Sqrt(dx * dx + dy * dy);
}
} Использование ILogger
Для логирования мы будем использовать интерфейс ILogger, который предоставляет несколько перегрузок метода Log, позволяющего указать уровень логирования в качестве параметра, а также методов вида Log<уровень>, например LogInformation, LogError и т.п. Все эти методы принимают в качестве параметров строку шаблона и массив аргументов (params object[]).
Залогируем, для примера, результат вычисления длины отрезка:
var segment = new Segment(new (1, 2), new (4, 6));
var length = segment.GetLength();
logger.LogInformation(
"The length of segment {@segment} is {length}.", segment, length); Строка формата имеет два аргумента, заключенных в фигурные скобки: segment и length. Значения аргументов передаются как последующие параметры метода. Символ @ перед аргументом segment является частью соглашения Message Template и означает, что Serilog должен развернуть структуру аргумента как объект. Без данного символа Serilog по умолчанию просто залогировал бы результат вызова метода segment.ToString().
В результате мы получим в логе следующую запись:
{
"@t": "2021-11-13T19:57:31.8636016Z",
"@mt": "The length of segment {@segment} is {length}.",
"segment": {
"Start": {
"X": 1,
"Y": 2,
"$type": "Point"
},
"End": {
"X": 4,
"Y": 6,
"$type": "Point"
},
"$type": "Segment"
},
"length": 5,
"SourceContext": "Program"
} Получившийся JSON-объект имеет свойство @mt, содержащее нашу строку шаблона, а также свойства segment и length, содержащие наши аргументы.
Несмотря на то, что данный подход достаточно прост и прямолинеен, он имеет ряд существенных недостатков:
-
Необходимость разбирать строку формата во время выполнения, что является достаточно затратным. Чтобы сгладить этот недостаток, инфраструктура логирования имеет кэш на 1024 строки.
-
Необходимость выделять память под массив аргументов даже в том случае, если указанный уровень логирования отключен.
-
Аргументы значимых типов упаковываются при помещении в массив объектов.
-
Дублирование имен переменных в строке шаблона и в параметрах метода.
-
Легко забыть один из параметров или перепутать их порядок.
В качестве альтернативы, лишенной всех этих недостатков, .Net 6 предлагает использовать новый генератор исходного кода: мы можем объявить частичный (partial) метод, принимающий нужные нам параметры и пометить его атрибутом LoggerMessageAttribute, как показано в следующем примере:
[LoggerMessage(0, LogLevel.Information, "The length of segment {segment} is {length}.")]
public static partial void LogSegmentLength(this ILogger logger, Segment segment, double length); Данный подход позволяет обеспечить наивысшую производительность логирования, однако также имеет свои недостатки:
-
Захламляет исходный код объявлениями частичных методов.
-
Не позволяет использовать символ
@перед имена аргументов, из-за чего Serilog не разворачивает их значения в объекты JSON.
Добавляем поддержку интерполированных строк в ILogger
Итак, нам бы хотелось найти выразительный способ писать структурные логи и по возможности избежать описанных выше недостатков. Удобным способом могло бы стать интерполирование строк. Однако для этого нам придется сначала проделать дополнительную работу.
Если мы попробуем вызвать метод логирования с интерполированной строкой, например:
logger.LogInformation($"The length of segment {segment} is {length}."); то в логах мы получим следующую запись:
{
"@t": "2021-11-13T23:40:23.1323976Z",
"@mt": "The length of segment Segment { Start = Point { X = 1, Y = 2 }, End = Point { X = 4, Y = 6 } } is 5.",
"SourceContext": "Program"
} Как и следовало ожидать, мы потеряли всю информацию об аргументах. Это произошло потому, что компилятор C# превратил нашу интерполированную строку в обычный вызов метода String.Format.
Вообще говоря, до C# 10, компилятор мог преобразовать интерполированную строку либо в объект типа FormattableString, либо в обычную строку. Объекты типа FormattableString уже больше похожи на то, что нам нужно для решения нашей задачи, так как содержат в себе строку форматирования и массив аргументов в неизменном виде, однако их возможностей все еще недостаточно, так как мы теряем имена аргументов. Кроме того, при выборе перегрузки метода, C# отдает предпочтение версии, принимающей строку, что также не очень удобно на практике.
К счастью, в C# 10 появился новый механизм для интерполированных строк, которые позволит нам добиться того, чего мы хотим. Вкратце, мы можем создать структуру-обработчик интерполированных строк, предназначенную специально для нашей задачи:
[InterpolatedStringHandler]
public ref struct StructuredLoggingInterpolatedStringHandler
{
// Код обработчика будет приведен ниже
} Далее мы можем использовать ее как аргумент метода. Создадим, для примера, метод расширения Log:
public static partial class LoggerExtensions
{
public static void Log(this ILogger logger, LogLevel logLevel,
[InterpolatedStringHandlerArgument("logger", "logLevel")] ref StructuredLoggingInterpolatedStringHandler handler)
{
// Код метода будет приведен ниже
}
} Если теперь мы попробуем, передать интерполированную строку в наш метод Log:
logger.Log(LogLevel.Information, $"The length of segment {segment} is {length}."); то компилятор превратит этот вызов в следующий код:
var handler = new StructuredLoggingInterpolatedStringHandler(
27, 2, logger, LogLevel.Information, out bool isEnabled);
if (isEnabled)
{
handler.AppendLiteral("The length of segment ");
handler.AppendFormatted(segment);
handler.AppendLiteral(" is ");
handler.AppendFormatted(length);
handler.AppendLiteral(".");
}
logger.Log(LogLevel.Information, ref handler); Как мы видим, компилятор использует вызов метода AppendLiteral для добавления литеральной части строки и вызов метода AppendFormatted для аргументов, а значит мы можем написать наш обработчик так, чтобы он сформировал строку шаблона, которую мы сможем передать в оригинальный метод ILogger.Log, а также список аргументов.
У вас может возникнуть вопрос, а откуда мы получим имена наших аргументов. В это нам поможет еще одна новая возможность C# 10 — CallerArgumentExpressionAttribute. Как и в случае с другими родственными Caller*-атрибутами, мы можем пометить им дополнительный строковый параметр метода AppendFormatted, и компилятор вставит в качестве значения C#-выражение, использованное при вызове метода для другого параметра этого же метода.
Итак, давайте соберем все то, что мы узнали вместе и напишем код нашего обработчика.
Для начала, объявим поля для хранения шаблона сообщения и его аргументов, а также свойство IsEnabled, в котором мы будем хранить значение, указывающее является ли включенным требуемый уровень логирования.
[InterpolatedStringHandler]
public ref struct StructuredLoggingInterpolatedStringHandler
{
private readonly StringBuilder _template = null!;
private readonly List<object?> _arguments = null!;
public bool IsEnabled { get; }
// ...
}
Далее мы должны создать конструктор, принимающий длину строкового литерала, количество аргументов, экземпляр ILogger, уровень логирования для сообщения и выходной параметр IsEnabled.
public StructuredLoggingInterpolatedStringHandler(
int literalLength,
int formattedCount,
ILogger logger,
LogLevel logLevel,
out bool isEnabled)
{
IsEnabled = isEnabled = logger.IsEnabled(logLevel);
if (isEnabled)
{
_builder = new StringBuilder(literalLength);
_arguments = new List<object?>(formattedCount);
}
} Обратите внимание, что мы создаем StringBuilder и List<object?> только в случае, если переданный уровень логирования включен, тем самым экономя ресурсы, если это не так.
Также у вас мог возникнуть вопрос, откуда компилятор получает ILogger и уровень логирования. Если вы посмотрите немного выше на объявление метода Log, то увидите, что параметр обработчика помечен атрибутом [InterpolatedStringHandlerArgument("logger", "logLevel")] с двумя аргументами. Эти аргументы указывают имена параметров этого метода, которые содержат эти объекты.
Далее, добавим метод AppendLiteral:
public void AppendLiteral(string s)
{
if (!IsEnabled)
return;
_template.Append(s.Replace("{", "{{", StringComparison.Ordinal).Replace("}", "}}", StringComparison.Ordinal));
} В коде этого метода мы также экранируем фигурные скобки вызовами метода String.Replace. На самом деле мы могли бы провести экранирование в один проход, однако для простоты примера оставим этот код как есть.
Наконец, добавим метод AppendFormatted:
public void AppendFormatted<T>(
T value,
[CallerArgumentExpression("value")] string name = "")
{
if (!IsEnabled)
return;
_arguments.Add(value);
_template.Append($"{{@{name}}}");
} Как я и говорил ранее, он содержит параметр name со значением по-умолчанию и помеченный атрибутом [CallerArgumentExpression("value")]. Вместо значения по умолчанию компилятор подставит C#-выражение использованное при вызове для параметра value (в простейшем случае — имя переменной).
Обратите внимание, что я всегда добавляю символ @ перед именем аргумента. Насколько я вижу, Serilog нормально обрабатывает его в том числе для примитивных/встроенных типов. Впрочем, если бы это было не так, мы всегда могли бы сделать отдельные перегрузки метода AppendFormatted для таких типов.
StringBuilder.Append
Кстати, в этом методе используется перегрузка StringBuilder.Append(ref System.Text.StringBuilder.AppendInterpolatedStringHandler handler) появившаяся в .Net 6, которая в свою очередь также использует новый механизм интерполирования строк.
Наконец добавим метод, возвращающий построенный шаблон сообщения и массив аргументов:
public (string, object?[]) GetTemplateAndArguments() => (_template.ToString(), _arguments.ToArray()); Наш обработчик готов! Полный его код вы можете найти под спойлером:
Код обработчика
[InterpolatedStringHandler]
public ref struct StructuredLoggingInterpolatedStringHandler
{
private readonly StringBuilder _template = null!;
private readonly List<object?> _arguments = null!;
public bool IsEnabled { get; }
public StructuredLoggingInterpolatedStringHandler(int literalLength, int formattedCount, ILogger logger, LogLevel logLevel, out bool isEnabled)
{
IsEnabled = isEnabled = logger.IsEnabled(logLevel);
if (isEnabled)
{
_template = new (literalLength);
_arguments = new (formattedCount);
}
}
public void AppendLiteral(string s)
{
if (!IsEnabled)
return;
_template.Append(s.Replace("{", "{{", StringComparison.Ordinal).Replace("}", "}}", StringComparison.Ordinal));
}
public void AppendFormatted<T>(T value, [CallerArgumentExpression("value")] string name = "")
{
if (!IsEnabled)
return;
_arguments.Add(value);
_template.Append($"{{@{name}}}");
}
public (string, object?[]) GetTemplateAndArguments() => (_template.ToString(), _arguments.ToArray());
} Наш метод расширения Log может использовать его следующим образом:
public static partial class LoggerExtensions
{
public static void Log(this ILogger logger, LogLevel logLevel,
[InterpolatedStringHandlerArgument("logger", "logLevel")] ref StructuredLoggingInterpolatedStringHandler handler)
{
if (handler.IsEnabled)
{
var (template, arguments) = handler.GetTemplateAndArguments();
logger.Log(logLevel, template, arguments);
}
}
} Теперь все готово, чтобы использовать его для логирования:
logger.Log(LogLevel.Information, $"The length of segment {segment} is {length}."); В результате мы получим правильное сообщение:
{
"@t": "2021-11-14T02:13:34.8380946Z",
"@mt": "The length of segment {@segment} is {@length}.",
"segment": {
"Start": {
"X": 1,
"Y": 2,
"$type": "Point"
},
"End": {
"X": 4,
"Y": 6,
"$type": "Point"
},
"$type": "Segment"
},
"length": 5,
"SourceContext": "Program"
} Кстати, обратите внимание на то, что перегрузка метода, принимающая обработчик, имеет приоритет над перегрузкой, принимающей строку. В данном случае, по моему мнению, разработчики C# исправили ошибку с приоритетами, которую допустили с FormattableString в C# 6.
Итак, теперь у нас есть метод расширения, позволяющий писать в лог с указанным уровнем. Нам также хотелось бы иметь методы специфичные для каждого уровня логирования, такие как LogError. Мы можем создать их по аналогии, однако наш оригинальный обработчик требует передачи уровня логирования в качестве аргумента, который отсутствует в наших методах. Чтобы решить эту проблему, нам придется создать отдельный обработчик для каждого уровня логирования. К счастью, мы можем воспользоваться композицией и переиспользовать наш StructuredLoggingInterpolatedStringHandler внутри этих обработчиков. Пример такого обработчика приведен под спойлером:
Код обработчика
[InterpolatedStringHandler]
public ref struct StructuredLoggingErrorInterpolatedStringHandler
{
private readonly StructuredLoggingInterpolatedStringHandler _handler;
public StructuredLoggingErrorInterpolatedStringHandler(int literalLength, int formattedCount, ILogger logger, out bool isEnabled)
{
_handler = new StructuredLoggingInterpolatedStringHandler(literalLength, formattedCount, logger, LogLevel.Error, out isEnabled);
}
public bool IsEnabled => _handler.IsEnabled;
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void AppendLiteral(string s) => _handler.AppendLiteral(s);
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void AppendFormatted<T>(T value, [CallerArgumentExpression("value")] string name = "") => _handler.AppendFormatted(value, name);
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public (string, object?[]) GetTemplateAndArguments() => _handler.GetTemplateAndArguments();
} Код метода
public static void LogError(this ILogger logger, [InterpolatedStringHandlerArgument("logger")] ref StructuredLoggingErrorInterpolatedStringHandler handler)
{
if (handler.IsEnabled)
{
var (template, arguments) = handler.GetTemplateAndArguments();
logger.LogError(template, arguments);
}
} Полный код проекта (с небольшими улучшениями) можно найти на GitHub.
Производительность
UPD: По просьбе @vabka добавил бенчмарки.
Для замера производительности воспользуемся BenchmarkDotNet. Будем использовать логирование в Serilog с пустым логгером. Результаты выглядят следующим образом:
| Method | IsEnabled | Mean | Error | StdDev | Ratio | Allocated |
|---|---|---|---|---|---|---|
| Template and Args | False | 94.43 ns | 0.215 ns | 0.191 ns | 1.00 | 64 B |
| Interpolated Handler | False | 14.65 ns | 0.059 ns | 0.055 ns | 0.16 | — |
| Logger Message Delegate | False | 14.97 ns | 0.086 ns | 0.080 ns | 0.16 | — |
| Formattable String | False | 31.72 ns | 0.314 ns | 0.294 ns | 0.34 | 96 B |
| Formattable String NP | False | 40.53 ns | 0.277 ns | 0.246 ns | 0.43 | 160 B |
| Formattable String Anonymous | False | 34.67 ns | 0.286 ns | 0.268 ns | 0.37 | 120 B |
| Template and Args | True | 4,048.28 ns | 11.917 ns | 11.147 ns | 1.00 | 3,024 B |
| Interpolated Handler | True | 4,316.35 ns | 16.610 ns | 15.537 ns | 1.07 | 3,400 B |
| Logger Message Delegate | True | 3,977.99 ns | 11.557 ns | 10.811 ns | 0.98 | 2,984 B |
| Formattable String | True | 7,239.94 ns | 19.100 ns | 17.866 ns | 1.79 | 7,673 B |
| Formattable String NP | True | 5,828.89 ns | 23.061 ns | 20.443 ns | 1.44 | 5,672 B |
| Formattable String Anonymous | True | 6,402.80 ns | 22.911 ns | 21.431 ns | 1.58 | 5,832 B |
В этой таблице:
-
Template and Args — обычный сырой вызов
LogInformation(string, object[]). -
Interpolated Handler — наш код с интерполяцией.
-
Logger Message Delegate — закэшированный делегат, созданный при помощи LoggerMessage.Define. Этот способ использует и генератор исходного кода (source generator).
-
Formattable String * — различные способы из библиотеки https://github.com/Drizin/InterpolatedLogging, на которую любезно указал в комментариях @vabka
Как мы видим, при отключенном уровне логирования, наш метод оказывается быстрее и не выделяет ненужной памяти.
При включенном уровне логирования, наш метод примерно на 7-10% медленне, чем использование сырого шаблона либо закэшированного делегата, но все равно существенно оптимальнее нежели https://github.com/Drizin/InterpolatedLogging.
Заключение
В результате у нас получилось с помощью C# 10 добавить поддержку структурного логирования с использованием интерполированных строк и избавиться от проблем с дублированием аргументов, передачей неверного количества аргументов, а также от выделения памяти в случае, когда данный уровень логирования выключен.
В коде все еще присутствуют некоторые проблемы, такие как отсутствие экранирования имен (так, Serilog требует, чтобы имена были правильными C#-идентификаторами) или неоптимальная реализация экранирования фигурных скобок. Тем не менее, он вполне может послужить основой для создания законченного промышленного решения для структурного логирования.
Полезные ссылки
-
https://habr.com/ru/post/266299/
-
https://andrewlock.net/exploring-dotnet-6-part-8-improving-logging-performance-with-source-generators/
-
https://docs.microsoft.com/en-us/dotnet/core/extensions/logger-message-generator
-
https://docs.microsoft.com/ru-ru/dotnet/csharp/whats-new/tutorials/interpolated-string-handler
-
https://docs.microsoft.com/ru-ru/dotnet/api/system.runtime.compilerservices.callerargumentexpressionattribute?view=net-6.0
Рассказ Р. Брэдбери «Убийца» можно использовать в качестве аргумента, раскрывающего направление итогового сочинения 2021-2022 «Цивилизация и технологии».
Время чтения: около 15 минут.
Проблемы:
-влияние технологий на жизнь человека
-противостояния человека и общества
Музыка гналась за ним по белым коридорам. Из-за одной двери слышался вальс из «Веселой вдовы». Из-за другой — «Послеполуденный отдых фавна». Из-за третьей — «Поцелуй еще разок!». Он повернул за угол, «Танец с саблями» захлестнул его шквалом цимбал, барабанов, кастрюль и сковородок, ножей и вилок, жестяными громами и молниями. Все это схлынуло, когда он чуть не бегом вбежал в приемную, где расположилась, секретарша, блаженно ошалевшая от Пятой симфонии Бетховена. Он шагнул вправо, потом влево, словно рукой помахал у нее перед глазами, но она так его и не заметила.
Негромко зажужжал радиобраслет.
— Слушаю.
— Пап, это я, Ли. Ты не забыл? Мне нужны деньги.
— Да, да, сынок. Сейчас я занят.
— Я только хотел напомнить, пап, — сказал браслет.
Голос сына потонул в увертюре Чайковского к «Ромео и Джульетте», она вдруг затопила длинные коридоры.
Психиатр шел по улью, где лепились друг к другу лаборатории и кабинеты, и со всех сторон на него сыпалась цветочная пыльца мелодий. Стравинский мешался с Бахом, Гайдн безуспешно отбивался от Рахманинова, Шуберт погибал под ударами Дюка Эллингтона. Секретарши мурлыкали себе под нос, врачи насвистывали — все по-утреннему бодро принимались за работу, психиатр на ходу кивал им. У себя в кабинете он просмотрел кое-какие бумаги со стенографисткой, которая все время что-то напевала, потом позвонил по телефону наверх, полицейскому капитану. Несколько минут спустя замигала красная лампочка и с потолка раздался голос:
— Арестованный доставлен для беседы в кабинет номер девять.
Он отпер дверь и вошел, позади щелкнул замок.
— Только вас не хватало, — сказал арестант и улыбнулся.
Эта улыбка ошеломила психиатра. Такая она была сияющая, лучезарная, она вдруг осветила и согрела комнату. Она была точно утренняя заря в темных горах, эта улыбка. Точно полуденное солнце внезапно проглянуло среди ночи. А над этой хвастливой выставкой ослепительных зубов спокойно и весело блестели голубые глаза.
— Я пришел вам помочь, — сказал психиатр.
И нахмурился. Что-то в комнате не так. Он ощутил это еще с порога. Неуверенно огляделся. Арестант засмеялся:
— Удивились, что тут так тихо? Просто я кокнул радио.
«Буйный», — подумал врач.
Арестант прочел его мысли, улыбнулся и успокоительно поднял руку:
— Нет-нет, я так только с машинками, которые тявкают.
На сером ковре валялись осколки ламп и клочки проводов от сорванного со стены радио. Не глядя на них, чувствуя, как его обдает теплом этой улыбки, психиатр уселся напротив пациента; необычная тишина давила, словно перед грозой.
— Вы — Элберт Брок, именующий себя Убийцей?
Брок удовлетворенно кивнул.
— Прежде чем мы начнем… — мягким проворным движением он снял с руки врача радиобраслет. Взял крохотный приемник в зубы, точно орех, сжал покрепче — крак! — и вернул ошарашенному психиатру обломки с таким видом, словно оказал и себе, и ему величайшее благодеяние. — Вот так-то лучше.
Врач во все глаза смотрел на загубленный аппарат.
— Немало с вас, наверно, взыскивают за убытки.
— Наплевать! — улыбнулся пациент. — Как поется в старой песенке, «Мне плевать, что станется со мною!» — вполголоса пропел он.
— Начнем? — спросил врач.
— Извольте. Первой жертвой, одной из первых, был мой телефон. Гнуснейшее убийство. Я запихал его в кухонный поглотитель. Забил бедняге глотку. Несчастный задохся насмерть. Потом я пристрелил телевизор!
— М-мм, — промычал психиатр.
— Всадил в кинескоп шесть пуль. Отличный был трезвон, будто разбилась люстра.
— У вас богатое воображение.
— Весьма польщен. Всегда мечтал стать писателем.
— Не расскажете ли, когда вы возненавидели телефон?
— Он напугал меня еще в детстве. Один мой дядюшка называл его Машина-призрак. Бесплотные голоса. Я боялся их до смерти. Стал взрослым, но так и не привык. Мне всегда казалось, что он обезличивает человека. Если ему заблагорассудится, он позволит вашему «я» перелиться по проводам. А если не пожелает, просто высосет его, и на другом конце провода окажетесь уже не вы, а какая-то дохлая рыба, не живой теплый голос, а только сталь, медь и пластмасса. По телефону очень легко сказать не то, что надо; вовсе и не хотел это говорить, а телефон все переиначил. Оглянуться не успел, а уже нажил себе врага. И потом телефон — необыкновенно удобная штука! Стоит и прямо-таки требует: позвони кому-нибудь, а тот вовсе не желает, чтобы ему звонили. Друзья звонят мне, звонят, звонят без конца. Ни минуты покоя, черт возьми. Не телефон — так телевизор, или радио, или патефон. А если не телевизор, не радио и не патефон, так кинотеатр тут же на углу или кинореклама на облаках. С неба теперь льет не дождь, а мыльная пена. А если не слепят рекламой на небесах, так глушат джазом в каждом ресторане; едешь в автобусе на работу — и тут музыка и реклама. А если не музыка, так служебный селектор и главное орудие пытки — радиобраслет; жена и друзья вызывают меня каждые пять минут. И что за секрет у этих штучек, чем они так соблазняют людей? Обыкновенный человек сидит и думает: делать мне нечего, скучища, а на руке этот самый наручный телефон — дай-ка позвоню старине Джо. Алло, алло! Я люблю жену, друзей, вообще человечество, очень люблю… Но вот жена в сотый раз спрашивает: «Ты сейчас где, милый?» — а через минуту вызывает приятель и говорит: «Слушай, отличный анекдот: один парень…» А потом кто-то орет: «Вас вызывает Статистическое бюро. Какой марки резинку вы жуете в данную минуту?» Ну, знаете!
— Как вы себя чувствовали всю эту неделю?
— А так: вот-вот взорвусь. Или начну биться головой о стену. В тот день в конторе я и поступил, как надо.
— А именно?
— Плеснул воды в селектор.
Психиатр сделал пометку в блокноте.
— И вывели его из строя?
— Конечно! То-то была потеха! Стенографистки забегали, как угорелые! Крик, суматоха!
— И вам на время полегчало, а?
— Еще бы! А днем меня осенило, я кинул свой радиобраслет на тротуар и растоптал. Кто-то как раз заверещал: «Говорит Статистическое бюро, девятый отдел. Что вы сегодня ели на обед?» — и тут я вышиб из машинки дух.
— И вам еще полегчало, а?
— Я вошел во вкус. — Брок потер руки. — Дай-ка, думаю, подниму единоличную революцию, надо же человеку освободиться от всех этих удобств! Кому они, спрашивается, удобны? Друзьям-приятелям? «Здорово, Эл, решил с тобой поболтать, я сейчас в Грин-хилле, в гардеробной. Только что я их тут всех сокрушил одним ударом. Одним ударом, Эл! Удачный денек! А сейчас выпиваю по этому случаю. Я решил, что тебе будет любопытно». Еще удобно моему начальству — я разъезжаю по делам службы, а в машине радио, и они всегда могут со мной связаться. Связаться! Мягко сказано. Связаться, черта с два! Связать по рукам и ногам! Заграбастать, зацапать, раздавить, измолотить всеми этими радиоголосами. Нельзя на минуту выйти из машины, непременно надо доложить: «Остановился у бензоколонки, зайду в уборную». — «Ладно, Брок, валяйте». — «Брок, чего вы столько возились?» — «Виноват, сэр!» — «В другой раз не копайтесь!» — «Слушаю, сэр!» Так вот, доктор, знаете, что я сделал? Купил кварту шоколадного мороженого и досыта накормил свой передатчик.
— Почему вы избрали для этой цели именно шоколадное мороженое?
Брок чуть призадумался, потом улыбнулся:
— Это мое любимое лакомство.
— Вот как, — сказал врач.
— Я решил: черт подери, что годится для меня, годится и для радио в моей машине.
— Почему вы решили накормить передатчик именно мороженым?
— В тот день была жара.
— И что же дальше? — помолчав, спросил врач.
— А дальше наступила тишина. Господи, какая благодать! Ведь окаянное радио трещало без передышки. Брок, туда, Брок, сюда, Брок, доложите, когда пришли, Брок, доложите, когда ушли, хорошо, Брок, обеденный перерыв, Брок, перерыв кончился, Брок, Брок, Брок, Брок… Я наслаждался тишиной, прямо как мороженым.
— Вы, видно, большой любитель мороженого.
— Я ездил, ездил и все слушал тишину. Как будто тебя укутали в отличнейшую мягкую фланель. Тишина. Целый час тишины! Сижу в машине и улыбаюсь, и чувствую — в ушах мягкая фланель. Я наслаждался, я просто упивался, это была Свобода!
— Продолжайте!
— Потом я вспомнил, что есть такие портативные диатермические аппараты. Взял один напрокат и в тот же вечер повез в автобусе домой. А в автобусе полным-полно замученных канцелярских крыс, и все переговариваются по радиобраслетам с женами: я, мол, уже на Сорок третьей улице… на Сорок четвертой… на Сорок девятой… поворачиваю на Шестьдесят первую… А один супруг бранится: «Хватит тебе околачиваться в баре, черт возьми! Иди домой и разогрей обед, я уже на Семидесятой!» А репродуктор орет «Сказки венского леса» — точь-в-точь канарейка натощак насвистывает про лакомые зернышки. И тут я включаю диатермический аппарат! Помехи! Перебои! Все жены отрезаны от брюзжанья замученных за день мужей. Все мужья отрезаны от жен, на глазах у которых милые отпрыски только что запустили камнем в окно! «Венский лес» срублен под корень, канарейке свернули шею. Ти-ши-на! Пугающая внезапная тишина. Придется пассажирам автобуса вступить в беседу друг с другом. Они в страхе, в ужасе, как перепуганные овцы!
— Вас забрали в полицию?
— Пришлось остановить автобус. Ведь и впрямь музыка превратилась в кашу, мужья и жены не знали, на каком они свете. Шабаш ведьм, сумбур, светопреставление. Митинг в обезьяннике! Прибыла аварийная команда, меня мигом засекли, отчитали, оштрафовали, я и оглянуться не успел, как очутился дома — понятно, без аппарата.
— Разрешите вам заметить, мистер Брок, что до сих пор ваш образ действий кажется мне не слишком… э-э… разумным. Если вам не нравится радиотрансляция, служебные селекторы, приемники в автомобилях, почему бы вам не вступить в общество радионенавистников? Подавайте петиции, добивайтесь запретов и ограничений в законодательном порядке. В конце концов, у нас же демократия!
— А я так называемое меньшинство, — сказал Брок. — Я уже вступал во всякие общества, вышагивал в пикетах, подавал петиции, обращался в суд. Я протестовал годами. И везде меня поднимали на смех. Все просто обожают радио и рекламу. Я один такой урод, не иду в ногу со временем.
— Но тогда, может быть, вам следует сменить ногу, как положено солдату? Надо подчиняться большинству.
— Так ведь они хватают через край! Послушать немножко музыки, изредка «связаться» с друзьями, может, и приятно, но они-то воображают: чем больше, тем приятнее. Я прямо озверел! Прихожу домой — жена в истерике. Отчего, почему? Да потому, что она полдня не могла со мной связаться. Помните, я малость поплясал на своем радиобраслете? Ну вот, в тот вечер я и задумал убийство собственного дома.
— Что же, так и записать?
— По смыслу это совершенно точно. Я решил убить его, умертвить. Дом у меня, знаете, чудо техники: разговаривает, поет, мурлычет, сообщает погоду, декламирует стишки, пересказывает романы, звякает, брякает, напевает колыбельную песенку, когда ложишься в постель. Станешь под душ — он тебя глушит ариями из опер, ляжешь спать — обучает испанскому языку. Этакая болтливая нора, в ней полно электронных оракулов. Духовка тебе лопочет: «Я пирог с вареньем, я уже испекся!» — или: «Я — жаркое, скорей подбавьте подливки» — и прочий младенческий вздор. Кровати укачивают тебя на ночь, а утром встряхивают, чтоб проснулся! Этот дом терпеть не может людей, верно вам говорю! Парадная дверь так и рявкает: «Сэр, у вас башмаки в грязи!» А пылесос гоняется за тобой по всем комнатам, как собака, не дай бог уронишь щепотку пепла с сигареты — мигом всосет. О боже милостивый!
— Успокойтесь, — мягко посоветовал психиатр.
— Помните песенку Гилберта и Салливена «Веду обидам точный счет, и уж за мной не пропадет»? Всю ночь я подсчитывал обиды. А рано поутру купил револьвер. На улице нарочно ступал в самую грязь. Парадная дверь так и завизжала: «Надо ноги вытирать! Не годится пол марать!» Я выстрелил этой дряни прямо в замочную скважину. Вбежал в кухню, а там плита скулит: «Скорей взгляни! Переверни!» Я всадил пулю в самую середку механической яичницы, и плите пришел конец. Ох, как она зашипела и заверещала: «Я перегорела!» Потом завопил телефон, прямо как капризный ублюдок. И я сунул его в поглотитель. Должен вам заявить честно и откровенно: я ничего не имею против поглотителя, он пострадал за чужие грехи. Теперь-то мне его жалко — очень полезное приспособление, и притом безобидное, словечка от него не услышишь, знай себе мурлычет, как спящий лев, и переваривает всякий мусор. Непременно отдам его в починку. Потом я пошел и пристрелил коварную бестию телевизор. Это Медуза: каждый вечер своим неподвижным взглядом обращает в камень миллионы людей, это сирена — поет, и зовет, и обещает так много, а дает ничтожно мало… но я всегда возвращался к ней, возвращался и надеялся на что-то до последней минуты, и вот — бац! Тут моя жена заметалась, точно безголовая индюшка, злобно закулдыкала, завопила на всю улицу. Явилась полиция. И вот я здесь.
Он блаженно откинулся на спинку стула и закурил.
— Мистер Брок, отдавали ли вы себе отчет, совершая такие преступления, что радиобраслет, репродуктор, телефон, радио в автобусе, селектор у вас на службе — все это либо чужая собственность, либо сдается напрокат?
— Я и опять бы это проделал, верное слово.
Психиатр едва не зажмурился от сияющей благодушной улыбки пациента.
— И вы не желаете воспользоваться помощью Службы душевного здоровья? Вы готовы за все ответить?
— Это только начало, — сказал Брок. — Я знаменосец скромного меньшинства, мы устали от шума, оттого, что нами вечно помыкают, и командуют, и вертят на все лады, и вечно глушат нас музыкой, и вечно кто-нибудь орет — делай то, делай это, иди туда, теперь сюда, быстрей, быстрей! Вот увидите. Начинается бунт. Мое имя войдет в историю!
— Гм-м… — психиатр, казалось, призадумался.
— Понятно, это не сразу сделается. На первых порах все были очарованы. Великолепная выдумка эти полезные и удобные штуки! Почти игрушки, почти забава! Но люди чересчур втянулись в игру, зашли слишком далеко, все наше общество попало в плен к механическим нянькам — и запуталось, и уже не умеет выпутаться, даже не умеет само себе признаться, что запуталось. Вот они и мудрствуют, как и во всем прочем: таков, мол, наш век! Таковы условия жизни! Мы — нервное поколение! Но помяните мое слово, семена бунта уже посеяны. Обо мне раззвонили на весь мир по радио, показывали меня и по телевидению, и в кино — вот ведь парадокс! Дело было пять дней назад. Про меня узнали миллиарды людей. Следите за биржевыми отчетами. Ждите в любой день. Хоть сегодня. Вы увидите, как подскочит спрос на шоколадное мороженое!
— Ясно, — сказал психиатр.
— Теперь, надеюсь, мне можно вернуться в мою милую одиночную камеру? Я намерен полгода наслаждаться одиночеством и тишиной.
— Пожалуйста, — спокойно сказал психиатр.
— За меня не бойтесь, — сказал, вставая, мистер Брок. — Я буду сидеть да посиживать и наслаждаться мягкой фланелью в ушах.
— Гм-м. — промычал психиатр, направляясь к двери.
— Не унывайте, — сказал Брок.
— Постараюсь, — отозвался психиатр.
Он нажал незаметную кнопку, подавая условный сигнал, дверь отворилась, он вышел в коридор, дверь захлопнулась, щелкнув замком. Он вновь шагал один по коридорам мимо бесчисленных дверей. Первые двадцать шагов его провожали звуки «Китайского тамбурина». Их сменила «Цыганка», затем «Пасакалья» и какая-то там минорная фуга Баха, «Тигровый рэгтайм», «Любовь — что сигарета». Он достал из кармана сломанный радиобраслет, точно раздавленного богомола. Вошел к себе в кабинет. Тотчас зазвенел звонок и с потолка раздался голос:
— Доктор?
— Только что закончил с Броком, — отозвался психиатр.
— Диагноз?
— Полная дезориентация, но общителен. Отказывается признавать простейшие явления окружающей действительности и считаться с ними.
— Прогноз?
— Неопределенный. Когда я его оставил, он с наслаждением затыкал себе уши воображаемыми тампонами.
Зазвонили сразу три телефона. Запасной радиобраслет в ящике стола заскрипел, словно раненый кузнечик. Замигала красноватая лампочка, и защелкал вызов селектора. Звонили три телефона. Жужжало в ящике. В открытую дверь вливалась музыка. Психиатр, что-то мурлыча себе под нос, надел новый радиобраслет, щелкнул селектором, поговорил минуту, снял одну телефонную трубку, поговорил, снял другую трубку, поговорил, снял третью, поговорил, нажал кнопку радиобраслета, поговорил негромко, размеренно, лицо его было невозмутимо спокойно, а вокруг гремела музыка, мигали лампочки, снова звонили два телефона, и руки его непрестанно двигались, и радиобраелет жужжал, и его вызывали по селектору, и с потолка звучали голоса. Так провел он остаток долгого служебного дня, овеваемый прохладным кондиционированным воздухом, сохраняя то же невозмутимое спокойствие; телефон, радиобраслет, селектор, телефон, радиобраслет, селектор, телефон, радиобраслет, селектор, телефон, радиобраслет, селектор, телефон, радиобраслет…
Перевоплощаемся в сказочных персонажей, готовим их любимые блюда и играем в игру «Угадай концовку».
Новогодние каникулы — прекрасное время для того, чтобы отдохнуть в кругу семьи. А еще для того, чтобы прочитать все, что давно откладывалось, напомнить детям, что книга лучше гаджета, показать подросткам, какую пользу и удовольствие приносит литература, а малышей начать учить читать самостоятельно. Как сделать все это и вдобавок отлично повеселиться — рассказывают сотрудники шести московских библиотек.
Family books и книжные фанты
Советует Марина Соломонова, заместитель директора по библиотечно-информационному обслуживанию Центральной городской детской библиотеки имени А.П. Гайдара
— Если не знаете, чем заняться на каникулах, попробуйте организовать у себя дома акцию family books. Для этого каждый член семьи должен выбрать книгу на определенную тему, например про художников. Допустим, мама возьмет биографию Микеланджело Буонаротти, а ребенок — книжку «Мальчик, которого укусил Пикассо» Энтони Пенроуза. Во время чтения и после обсудите произведения, обменяйтесь эмоциями. Мы в библиотеке однажды тоже проводили такую акцию — всем очень понравилось, особенно подросткам.
Еще один интересный вид времяпрепровождения — попробовать рассказать о книге, уложившись в 30 секунд или минуту, не пересказывая сюжет. Потом все голосуют, чей рассказ оказался точнее. Победителю можно вручить приз — что-то вкусное. Еще обязательно попробуйте поиграть в книжные фанты. Они отлично сочиняются даже по энциклопедиям. Очень смешные получаются задания, например про динозавров — изобразить, как они ходят, рычат, летают.
Кроме того, советую почитать по ролям. Если ваш ребенок еще не очень хорошо читает, эта игра ему очень поможет — проверено. Каждый пишет на листочке роль — можно персонажа из книги, а можно из жизни. Внимание: выбирайте персонажей, которых интересно изображать, пусть это будет, допустим, уставший продавец в супермаркете в час пик или самый строгий учитель в школе. Книгу для чтения тоже можно выбрать любую — хоть справочник по математике. Участники вытягивают роли и в течение минуты читают книгу в соответствии с ними.
Если ребенок — фантазер, поиграйте с ним в сочинение сказок по методике Джанни Родари. Его приемами пользуются и многие современные сценаристы. Возьмите любую сказку и постарайтесь придумать, что было с героями дальше, или сказку «наоборот». Что было бы, если бы Красная Шапочка была злой, а волк — добрым? А если бы Белоснежка отправилась не к семи гномам, а к семи великанам?
«Угадай концовку» и чтение вслух
Советует Анна Августиновская, библиотекарь 1-й категории библиотеки № 68
— Я предлагаю поиграть в «Угадай концовку», которая очень хорошо развивает фантазию. Сначала все вместе прочитайте рассказ, с которым не знаком ни один из членов семьи, а потом по очереди предлагайте свою концовку. И обязательно назначьте приз — либо за самый необычный финал, либо за финал, наиболее приближенный к авторскому.
Дети, особенно младшеклассники, очень любят читать вместе с родителями. Каникулы — отличный повод устроиться вместе на диване и почитать друг другу какую-нибудь новую интересную книгу. Лично я рекомендую «Я не люблю Новый год» Ирины Зартайской. Это история о девочке, которая терпеть не может новогодние елки и подарки. Но однажды с ней происходит кое-что неожиданное, действительно волшебное.
Капсула времени и настольная игра
Советует Ольга Зайцева, библиотекарь 1-й категории библиотеки № 172
— Дома на каникулах можно устроить книжную вечеринку. Пусть каждый возьмет свою любимую книгу. Потом прочтите любимые отрывки вслух — это невероятно сближает. А еще вы можете записать чтение на диктофон, сделать собственную аудиокнигу, а потом выложить ее на своих страницах в социальных сетях. Кстати, предложите запись и вашей районной библиотеке — уверена, ее сотрудники с радостью опубликуют ваш труд на своих страницах. Мы, например, всегда открыты для такого сотрудничества.
Могу предложить и мистически-фантазийное времяпрепровождение — гадание по книге. Все очень просто: задаете вопрос, открываете книгу на любой странице, вслепую выбираете строчку и зачитываете ее вслух. Совпадения, которые вы можете встретить относительно вашей ситуации, иногда просто поражают. А если вам попалась непонятная абракадабра вместо ответа, попробуйте ее как-то истолковать всей семьей. Поверьте, будет очень весело.
Попробуйте заложить капсулу времени — отправить самим себе письмо в будущее. Что для этого надо? Саму капсулу можно сделать из чего угодно — это может быть любая банка, коробка и даже стаканчик из-под йогурта, главное — ее украсить. Потом запишите на бумаге и положите внутрь обязательства каждого члена семьи — например, прочесть определенное произведение или количество книг. А через год распечатайте капсулу и проверьте, что из задуманного получилось.
Еще можно создать собственную настольную игру по мотивам книги, сделать кубик и фишки, придумать правила, связанные с сюжетом. Сразу могу подсказать идею для игры по мотивам книги Алана Милна «Винни Пух и все-все-все»: если игрок попадает на клетку, где герой падает с дерева, то он пропускает ход.
Домашний театр и письма героям
Советует Наталья Ключникова, заведующая библиотекой № 138
— Попробуйте устроить домашний театр — во время подготовки представления развиваются творческие способности, преодолевается стеснительность, выплескиваются эмоции. Выберете сказку, прочитайте ее, обсудите, смастерите из подручных материалов декорации и костюмы, а потом разыграйте сценки. В них, кстати, могут участвовать не только дети, но и взрослые.
Сейчас, когда мы используем достижения техники во всех сферах своей жизни, совсем забыли о письмах, написанных собственной рукой. Я думаю, очень полезно вспомнить эпистолярный жанр и написать письмо сказочному герою. Обязательно красивым почерком — советую посмотреть вместе какое-нибудь обучающее видео по каллиграфии. Для ребенка, особенно младшего школьника, это то, что надо. Каллиграфия развивает мелкую моторику, творческий потенциал, воспитывает усидчивость.
Театр теней и собственный комикс
Советует Ольга Хлыстова, заведующая библиотекой № 266
— Поделюсь одной очень простой игрой, от которой, поверьте, просто невозможно оторваться. Раскройте книгу и начинайте всей семьей соревноваться — кто за три минуты больше всех найдет слогов «ма», «па» или других. Это, кстати, очень полезно — у детей развивается грамотность. На первый взгляд может показаться, что это развлечение для малышей, но не спешите с выводами. Подростки очень легко включаются в игру, готовы так сидеть подолгу.
Вместе с подростками можно попробовать создать собственный комикс по мотивам события из книги или жизни семьи. А с малышами можно сделать книжку с интересными деталями — например, открывающимися окошками.
Но самое интересное, на мой взгляд, — это театр теней. Мы в библиотеке часто его устраиваем и всегда советуем в качестве домашнего досуга. В последний раз мы ставили спектакль по сказке Джулии Дональдсон «Груффало». Все очень просто: делаете из подручных материалов ширму (подойдет простыня), вырезаете фигурки персонажей (их можно нарисовать или распечатать). Направляете из-за ширмы лампу — и готово. Остальное вам подскажет фантазия.
Еда литературных героев и книга как снотворное
Советует Надежда Краснова, ведущий библиотекарь библиотеки № 111
— Вы пробовали когда-нибудь готовить то, что едят литературные герои сказок и рассказов? Уверена, что нет. Мой вам совет: обязательно сделайте это. Когда еще этим заниматься, как не на каникулах?
Попробуйте создать литературное меню на неделю. Например, в понедельник вы готовите мясные тефтели, которые так любил Карлсон из книжки Астрид Линдгрен, а на десерт делаете пирожные наследника Тутти из «Трех толстяков» Юрия Олеши. Во вторник можно прочитать «Арбузный переулок» из «Денискиных рассказов» Виктора Драгунского и пообедать молочной лапшой, а в выходные побаловать себя пончиками с малиновым вареньем, которые обожала Мэри Поппинс.
Еще хочу поделиться с вами полезной информацией. Ученые отметили, что книги улучшают сон и снимают напряжение. Всего шесть минут чтения перед сном сработают лучше, чем чашка травяного чая или расслабляющая музыка, поэтому советую вам заменить гаджеты на литературу. А дети обязательно возьмут с вас пример.

.jpg)

.jpeg)
.jpg)
.jpeg)
.jpg)