Архив автора: admin

Рыбный заливной пирог

Рецепт от Ирины Тамариной

Всем привет!

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

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

Ингредиенты:

тесто:

  • 2 яйца;
  • 3 ст.л. мягкого творожка;
  • 2 ст.л. (18 гр.) овсяных отрубей;
  • 1 ст.л. (6 гр.) пшеничных отрубей;
  • 1 ст.л. (20 гр.) кукурузного крахмала;
  • 0,5 ч.л. разрыхлителя;
  • соль.

начинка:

  • 1 баночка консервированной рыбы без масла;
  • 1 средняя луковица;
  • 1 ст.л. йогурта 0% жирности;
  • зелень (лук, укроп).

Приготовление рыбного заливного пирога:

В самом начале я говорила о том, что очень долго не могла определиться с рецептом рыбного заливного пирога. Почему? Я думала, что в начинку обязательно нужно добавлять яйца! А ведь яйца содержатся еще и в тесте, т.е. получалось, как минимум 3-4 яйца только в одном пироге — такой вариант меня и не устраивал.

Идею для начинки этого пирога, да и для теста тоже, подсказала мне одна моя преданная читательница Леночка (RioRita), которой уже пора присвоить звание моей идейной вдохновительницы.

Итак, приступим!

Готовим тесто для пирога:

Взбиваем яйца.
Творог у меня однородной консистенции с крупинками.
Взвешиваем все сухие ингредиенты.
К взбитым яйцам добавляем творог и засыпаем все сухие ингредиенты.
Все перемешиваем ложкой или вилкой.

Тесто для пирога нужно оставить минут на 10 для набухания овсяных отрубей.

А пока приготовим начинку:

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

Собираем рыбный пирог:

Овсяные отруби набухли, а тесто сильно загустело.

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

Для выпечки я использую 3 силиконовые формочки диаметром 8-9 сантиметров. На дно каждой я кладу всего 1 ст.л. теста и аккуратно распределяю (размазываю).

Основу для пирогов выпекать 5 минут в предварительно разогретой до 180 градусов духовке.

По истечении времени вынуть формочки из духовки — тесто слегка схватиться.
Первым слоем кладем в форму рыбу.
Затем лук полукольцами.
Добавляем в каждую формочку 1 ч.л. йогурта без добавок, слегка его распределяем и посыпаем зеленью.
В каждую форму выкладываем оставшуюся часть теста (примерно по 1,5 ст.л.), перед этим в него можно добавить 1 ч.л. йогурта (но не больше!) для того, чтобы оно было послушнее и легче распределялось по поверхности пирога.
Равномерно распределяем тесто по поверхности пирога.

Выпекать в духовке 20-25 минут в предварительно разогретой до 180 градусов духовке. Готовность определять по румяной корочке.

Рыбные заливные пироги готовы!
Иногда делаю рыбный заливной пирог в керамической форме диаметром 13 см.

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

Обязательно приготовьте рыбный заливной пирог — вы будете приятно удивлены, как это вкусно и просто

C нетерпением буду ждать ваших отзывов по этому рецепту

Приятного аппетита!

Вышел Apache HTTP Server 2.4.58 с устранением трех уязвимостей и различными улучшениями.

апаш

HTTP-сервер Apache — это веб-сервер HTTP с открытым исходным кодом, который позволяет обслуживать контент по запросам, поступающим от веб-браузеров.

В выпуск новой версии HTTP-сервера Apache 2.4.58, который прибывает устранение трех уязвимостей. два из них связаны с возможностью проведения DoS-атаки на системы, использующие протокол HTTP/2. Эта версия Apache является последней общедоступной версией ветки 2.4.x, которая упоминается как «олицетворяющая пятнадцать лет инноваций проекта», и поэтому эта версия Apache представляет собой выпуск безопасности, функций и исправлений ошибок.

Тем, кто не знаком с Apache, следует знать, что это такое. веб-сервер HTTP с открытым исходным кодом, который доступен для платформ Unix (BSD, GNU / Linux и др.), Microsoft Windows, Macintosh и других.



Читать

🐳 Как привязать контейнер без пользователя root к привилегированному порту на Linux

Одним из основных нововведений, появившихся в Podman, стала возможность запуска контейнеров без прав root.

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

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

Как включить или отключить «автоудаление сообщений» в Telegram

Когда вы используете Telegram в Windows, вы также можете включить или отключить функцию «Автоудаление сообщений». Если включено, все новые сообщения в чатах начнут автоматически удаляться у всех в указанный момент после их отправки.

Функция «Автоудаление сообщений» в Telegram позволяет пользователям автоматически удалять сообщения в чатах по истечении определенного периода времени. Это может быть полезно для пользователей, которые хотят сохранить конфиденциальность своих разговоров или освободить место на своих устройствах.

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

Читать

Различия между процедурным и объектно-ориентированным программированием

В области парадигм программирования Процедурное программирование и объектно-ориентированное программирование (ООП) являются двумя фундаментальными подходами к решению вычислительных задач. Хотя оба метода облегчают разработку программного обеспечения, они различаются по своим методологиям, организации и концептуальным основам. В этой статье рассматриваются основные различия между процедурным программированием и ООП, исследуются их характеристики, сильные стороны и области применения. Понимая эти различия, программисты могут принимать обоснованные решения о том, какая парадигма наилучшим образом соответствует требованиям их проекта. Прежде чем перейти к различиям между процедурным и объектно-ориентированным программированием, давайте сначала обсудим их по очереди.

 

Что такое процедурное программирование?

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

 

Ключевые характеристики процедурного программирования

  • Функции: Фундаментальными строительными блоками процедурных программ являются функции или процедуры. Каждая функция отвечает за конкретную задачу и может принимать входные данные, выполнять операции и выдавать выходные данные.
  • Глобальные переменные: Данные в процедурном программировании часто организуются с использованием глобальных переменных, к которым могут быть доступны и изменены различные функции программы.
  • Акцент на процедуре: Основное внимание уделяется определению последовательности шагов, необходимых для решения проблемы. Поток управления определяется вызовами функций и порядком выполнения.
  • Ограниченная возможность повторного использования: Хотя функции можно использовать повторно, процедурным программам может не хватать уровня возможности повторного использования и модульности, присущих другим парадигмам, таким как объектно-ориентированное программирование.
  • Возможность повторного использования кода: Функции можно повторно использовать в разных частях программы, повышая модульность кода и уменьшая избыточность.
  • Простота: Процедурное программирование часто проще в изучении и понимании, что делает его подходящим для небольших проектов и простых задач.

 

Преимущества процедурного программирования

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

 

Недостатки процедурного программирования

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

 

Приложения процедурного программирования

  • Системное программирование: Процедурные языки, такие как C, используются для программирования системного уровня, такого как написание операционных систем, драйверов устройств и встроенных систем.
  • Научные вычисления: Процедурное программирование может использоваться в научных симуляциях и вычислениях, где задействована линейная последовательность шагов.
  • Написание сценариев: Многие скриптовые задачи, такие как автоматизация рутинных задач или обработка данных, могут быть эффективно выполнены с помощью процедурного программирования.
  • Разработка алгоритмов: Разработка и тестирование алгоритмов, особенно тех, которые включают численные вычисления, могут быть эффективно выполнены с использованием процедурных языков.
  • Маломасштабные проекты: Процедурное программирование хорошо подходит для маломасштабных проектов, прототипов и задач, связанных с простыми вычислениями или манипуляциями с данными.

 

Что такое объектно-ориентированное программирование?

Объектно-ориентированное программирование (ООП) — это парадигма программирования, которая организует код путем представления объектов реального мира и их взаимодействий с использованием объектов. В ООП код структурирован вокруг концепции объектов, которые объединяют данные (атрибуты) и операции (методы или функции), которые могут быть выполнены с этими данными. Такой подход способствует модульности кода, возможности повторного использования и упрощению обслуживания.

 

Ключевые понятия объектно-ориентированного программирования

Объекты: Объекты — это экземпляры классов, представляющие реальные сущности или концепции. Они инкапсулируют как данные (атрибуты), так и поведение (методы).

  • Классы: Классы служат в качестве чертежей для создания объектов. Они определяют атрибуты и методы, которыми будут обладать объекты этого класса.
  • Инкапсуляция: Инкапсуляция относится к объединению данных и методов, которые работают с этими данными, в единый блок (объект). Это помогает скрыть внутренние детали реализации и обеспечивает понятный интерфейс для взаимодействия с объектом.
  • Наследование: Наследование позволяет классу (подклассу или производному классу) наследовать атрибуты и методы от другого класса (суперкласса или базового класса). Это способствует повторному использованию кода и созданию иерархии классов.
  • Полиморфизм: Полиморфизм позволяет рассматривать объекты разных классов как объекты общего суперкласса. Это обеспечивает гибкость и расширяемость кода, позволяя разным классам реализовывать методы с одинаковым именем, но специфичным поведением.
  • Абстракция: Абстракция предполагает упрощение сложной реальности путем моделирования классов на основе существенных характеристик. Это позволяет программистам сосредоточиться на соответствующих атрибутах и поведении.

 

Преимущества объектно-ориентированного программирования (ООП)

  • Модульность и возможность повторного использования: ООП способствует модульности кода, инкапсулируя данные и поведение внутри объектов. Эти объекты могут быть повторно использованы в разных частях программы, что повышает возможность повторного использования кода.
  • Организация кода: ООП обеспечивает четкую структуру, организуя код по классам и объектам. Это облегчает понимание, поддержку и расширение кода.
  • Абстракция: Абстракция позволяет разработчикам сосредоточиться на важных функциях, скрывая сложные детали реализации. Это приводит к более интуитивному и чистому коду.
  • Наследование: Наследование облегчает повторное использование кода, позволяя новым классам наследовать атрибуты и методы из существующих классов, уменьшая избыточность и повышая согласованность.
  • Полиморфизм: Полиморфизм позволяет создавать гибкий и расширяемый код, позволяя рассматривать различные классы как экземпляры общего суперкласса, повышая адаптивность кода.
  • Моделирование реального мира: ООП хорошо согласуется с концепциями реального мира, упрощая моделирование сложных систем и взаимосвязей внутри программы.
  • Совместная разработка: ООП поддерживает совместную разработку, поскольку разные разработчики могут работать над разными классами и объектами одновременно, не влияя на код друг друга.

 

Недостатки объектно-ориентированного программирования (ООП)

  • Кривая обучения: Изучение принципов и концепций ООП, особенно для начинающих, может быть более сложным по сравнению с более простыми парадигмами программирования.
  • Накладные расходы: ООП может привести к некоторым накладным расходам из-за необходимости определять классы, объекты и их связи, что может быть необязательно для небольших проектов.
  • Производительность: ООП может привести к увеличению производительности из-за дополнительных уровней абстракции и вызовов методов, хотя современные языки и компиляторы в значительной степени смягчили это.
  • Сложность: Чрезмерное использование или неправильный дизайн наследования и сложных иерархий классов могут привести к чрезмерно сложному и труднообслуживаемому коду.

 

Приложения объектно-ориентированного программирования (ООП)

  • Разработка программного обеспечения: ООП широко используется в разработке программного обеспечения для создания сложных приложений, включая настольные приложения, веб-приложения и мобильные приложения.
  • Разработка игр: Многие игровые движки и фреймворки используют ООП для моделирования игровых элементов, поведения и взаимодействий, облегчая разработку интерактивных игр.
  • Имитация и моделирование: ООП используется в таких областях, как научное моделирование, где системы реального мира моделируются с использованием объектно-ориентированных представлений.
  • Системы баз данных: ООП используется в объектно-реляционном отображении (ORM) для устранения разрыва между объектно-ориентированным программированием и системами реляционных баз данных.
  • Графические пользовательские интерфейсы (GUI): Создание GUI более интуитивно понятно с использованием ООП, поскольку элементы GUI могут быть представлены в виде объектов с соответствующим поведением.
  • Сети и API: ООП применяется в сетях и API для создания повторно используемых и расширяемых классов, которые инкапсулируют связь и обработку данных.

 

Различия между Процедурным и объектно-ориентированным программированием

Вот табличное представление различий между процедурным и объектно-ориентированным программированием.



















S.no.На основеПроцедурное программированиеОбъектно-ориентированное программирование
1.ОпределениеЭто язык программирования, который является производным от структурного программирования и основан на концепции вызова процедур. В нем используется пошаговый подход, позволяющий разбить задачу на набор переменных и подпрограмм с помощью последовательности инструкций.Объектно-ориентированное программирование — это философия или методология проектирования компьютерных программ, которая организует / моделирует проектирование программного обеспечения вокруг данных или объектов, а не функций и логики.
2.БезопасностьОно менее безопасно, чем OOPs.Скрытие данных возможно в объектно-ориентированном программировании благодаря абстракции. Таким образом, оно более безопасно, чем процедурное программирование.
3.ПодходВ нем используется нисходящий подход.В нем используется подход «снизу вверх».
4.Перемещение данныхВ процедурном программировании данные свободно перемещаются внутри системы от одной функции к другой.В ООП объекты могут перемещаться и взаимодействовать друг с другом с помощью функций-членов.
5.ОриентацияОн ориентирован на структуру / процедуру.Он объектно-ориентированный.
6.Модификаторы доступаВ процедурном программировании нет модификаторов доступа.Модификаторы доступа в ООП называются частными, общедоступными и защищенными.
7.НаследованиеВ процедурном программировании нет понятия наследования.В объектно-ориентированном программировании существует особенность наследования.
8.Возможность повторного использования кодаВ процедурном программировании отсутствует возможность повторного использования кода.Оно обеспечивает возможность повторного использования кода за счет использования функции наследования.
9.ПерегрузкаПерегрузка в процедурном программировании невозможна.В ООП существует концепция перегрузки функций и операторов.
10.ВажностьОно придает большое значение функциям, а не данным.В нем предпочтение отдается данным, а не функциям.
11.Виртуальный классВ процедурном программировании нет виртуальных классов.В ООП наблюдается появление виртуальных классов при наследовании.
12.Сложные проблемыЭто не подходит для решения сложных задач.Это подходит для решения сложных задач.
13.Скрытие данныхНе существует какого-либо надлежащего способа сокрытия данных.Существует возможность сокрытия данных.
14.Программный отделВ процедурном программировании программа делится на небольшие программы, которые называются функциями.В ООП программа делится на небольшие части, которые называются объектами.
15.ПримерыПримерами процедурного программирования являются C, Fortran, Pascal и VB.Примерами объектно-ориентированного программирования являются .NET, C #, Python, Java, VB.NET и C ++.

 

Заключение

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

 

Часто задаваемые вопросы, связанные с различиями между процедурным и объектно-ориентированным программированием

Вот несколько часто задаваемых вопросов, связанных с различиями между процедурным и объектно-ориентированным программированием

1. Что такое процедурное программирование? Что такое объектно-ориентированное программирование?

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

2. В чем основное различие между двумя парадигмами?

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

3. Что лучше: процедурное программирование или ООП?

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

4. Можно ли использовать ООП для небольших проектов?

Да, ООП можно использовать для небольших проектов. Хотя ООП преуспевает в управлении сложностью, она также может предложить такие преимущества, как многократное использование кода и модульность, даже в небольших проектах.

5. Является ли одна парадигма более современной, чем другая?

Обе парадигмы существуют уже давно. ООП приобрела известность в 1980-х годах с такими языками, как C ++, в то время как процедурное программирование восходит к ранним дням появления языков программирования, таких как Fortran и C.

6. Можете ли вы переключаться между парадигмами в рамках одного проекта?

В некоторых случаях — да. Однако переключение парадигм в рамках проекта может быть сложным и потребовать значительных изменений кода. Обычно проще выбрать наиболее подходящую парадигму в начале проекта.

7. Какова роль классов в объектно-ориентированном программировании?

Классы в ООП служат чертежами для создания объектов. Они определяют атрибуты (данные) и методы (поведение), которыми будут обладать объекты этого класса.

8. Можете ли вы привести пример процедурного языка программирования и языка ООП?

C является распространенным примером процедурного языка программирования. Java, C ++ и Python являются примерами языков, поддерживающих объектно-ориентированное программирование.

9. Существуют ли какие-либо языки программирования, которые сочетают в себе обе парадигмы?

Да, многие современные языки программирования, такие как Python, поддерживают обе парадигмы. Они позволяют вам комбинировать процедурный подход и ООП-подход в зависимости от потребностей вашего проекта.



2023-10-24T18:00:04
Программирование

Как установить Node.js в Ubuntu

 

Веб-разработчику, работающему хоть над фронтендом, хоть над бэкендом, понадобится установить Node.js в его систему.

Но, используя обычную команду sudo apt install nodejs, можно установить очень старую версию Node, что может привести к проблемам.

Поэтому вы, скорее всего, захотите установить конкретную версию, а для этого понадобится другая команда. Она должна установить LTS-версию Node (версию с долговременной поддержкой), предпочтительную для нужд разработчиков. Читать