Архив метки: Вопросы читателей

Я хочу удалить Apache в Ubuntu. Как это сделать?

Это краткое руководство показывает студентам и новым пользователям, как удалить Apache и/или очистить Ubuntu 20.04 | 18.04.

Если вы веб-мастер и хотите удалить веб-сервер Apache со своего хоста, вам помогут следующие шаги.

Существует два основных способа удаления или удаления программ из систем Ubuntu и Linux.

Вы можете запустить apt remove или apt purge.

Когда вы используете опцию remove с apt, команда удалит программный пакет из системы, но оставит файлы конфигурации.

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

Если вы хотите удалить Apache из Ubuntu, выполните следующие действия:

Удалить Apache

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

Если вы думаете об удалении Apache для переустановки, вы можете использовать опцию очистки.

Если вы просто хотите удалить пакет Apache, но сохраните все файлы конфигурации, выполните следующие команды:

sudo apt remove apache2

Приведенные выше команды удаляют Apache, но файлы конфигурации сайта в каталоге  /etc/apache2  остаются без изменений, включая каталог содержимого в /var/www.

Очистить Apache

Параметр очистки с apt удалит Apache и все файлы конфигурации из Ubuntu.

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

Файлы в каталоге /etc/apache2 будут удалены. Однако содержимое сайта в /var/www останется в покое.

Выполните приведенные ниже команды, чтобы удалить Apache вместе с его файлами конфигурации.

sudo apt purge apache2

Переустановка Apache

Когда вы используете опцию переустановки с apt, команда удаляет apache и устанавливает.

Параметр переустановки не изменяет и не удаляет какой-либо файл конфигурации или содержимое сайта в /var/www.

Он просто удалит и переустановит пакеты apache.

Чтобы переустановить apache, выполните следующие команды:

sudo apt reinstall apache2

Это должно сработать!

Вывод:

В этом посте показано, как удалить, очистить или переустановить apache. Если вы обнаружите какую-либо ошибку выше, пожалуйста, используйте форму комментария ниже, чтобы сообщить.



2021-02-17T12:40:57
Вопросы читателей

Можно ли заморозить пакеты в Ubuntu?

Это краткое руководство показывает студентам и новым пользователям, как настроить Ubuntu для удержания или предотвращения обновления пакетов.

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

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

Предотвращение установки или обновления пакета называется «удержанием пакета».

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

Чтобы начать работу с блокировкой или удержанием пакетов в Ubuntu, выполните следующие действия:

Показать пакеты

Существует множество инструментов для блокировки или предотвращения обновления пакетов. Вы можете установить и использовать Synaptic package management, Aptitude для хранения пакетов или использовать команду для того же.

Используя командную строку, чтобы показать все пакеты, которые не обновляются, выполните следующие команды:

sudo apt-mark showhold

Это перечислит пакеты, которые находятся в режиме ожидания.

Удерживайте или блокируйте пакеты

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

sudo apt-mark hold <имя-пакета>

Если вы используете aptitude, используйте следующие команды:

sudo aptitude hold <имя-пакета>

Замените <имя-пакета> на пакет, который вы хотите отложить. Например, если вы хотите заблокировать веб-сервер Nginx, выполните следующие команды:

sudo apt-mark hold nginx

Это будет удерживать веб-сервер Nginx от обновления.

Разблокировать пакеты

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

sudo apt-mark unhold <имя-пакета>

Если вы используете aptitude, выполните следующие команды:

sudo aptitude unhold <имя-пакета>

Снова замените <package-name> на пакет, который вы хотите разблокировать или разморозить, и пусть они продолжают получать обновления.

Например, если вы хотите разблокировать Nginx после того, как вы заблокировали выше, выполните следующие команды:

sudo apt-mark unhold nginx

Управление пакетами Synaptic

Если вы используете управление пакетами Synaptic, перейдите в  Диспетчер пакетов Synaptic  (Действия ==> Поиск Synaptic).

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

Когда вы найдете пакет, выберите его, перейдите в меню «Пакет» и выберите «Заблокировать версию».

Это заблокирует пакет от получения обновлений.

Это должно сработать!

Вывод:

В этом посте показано, как настроить Ubuntu для блокировки пакетов и предотвращения их установки или получения обновлений.

Если вы обнаружите какую-либо ошибку выше, пожалуйста, используйте форму ниже, чтобы сообщить.



2021-02-17T12:30:59
Вопросы читателей

MongoDB против MySQL: какую базу данных использовать

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

В этом руководстве мы рассмотрим основы MySQL и MongoDB, а затем расскажем о различиях между ними и о том, что вы должны использовать для различных случаев использования.

Что такое MongoDB?

MongoDB, разработанная в 2007 году, представляет собой популярную систему управления нереляционными базами данных (СУБД) NoSQL, в которой для хранения данных используются документы вместо таблиц или строк. Эта модель данных позволяет манипулировать связанными данными за одну операцию с базой данных.

Документы MongoDM — это документы и файлы, подобные JSON, и они поддерживают JavaScript (JS). Поля документа могут различаться, что упрощает изменение структуры с течением времени.

MongoDB считается schema-less, поскольку для нее не требуется заранее заданная схема базы данных. MongoDB использует гибкие пары ключ-значение, называемые документами, для хранения данных.

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

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

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

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

Ограничения MongoDB

  • MongoDB не поддерживает объединения, поэтому в зависимости от того, как вы хотите получить доступ к данным, вам, возможно, придется регулярно обновлять свои документы.
  • Она может потреблять много памяти из-за пар ключ-значение, которые могут привести к избыточности данных.
  • Документы имеют лимит 16 МБ.
  • Поскольку ACID не соблюдается строго, сложные транзакции могут усложняться.

    MongoDB не поддерживает хранимые процедуры, поэтому вы не можете реализовать бизнес-логику на уровне базы данных.

Что такое MySQL?

MySQL — это система управления реляционными базами данных (СУБД) с открытым исходным кодом, которая хранит данные в таблицах и строках. Он использует SQL (язык структурированных запросов) для передачи данных и доступа к ним. Операции JOIN упрощают запросы и корреляцию. Он следует архитектуре клиент-сервер и поддерживает многопоточность.

С момента создания базы данных MySQL у нее есть огромное сообщество, обширное тестирование и стабильность. Он доступен для всех основных платформ вместе с коннекторами для многих языков, включая C, Java, C ++, Python и PHP.

Общие варианты использования MySQL:

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

Ограничения MySQL

Ограничения MySQL такие же, как и у любой другой СУБД, включая:

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

Различия между MongoDB и MySQL

В этом разделе мы рассмотрим некоторые из основных различий между MongoDB и MySQL.

Представление данных

MongoDB представляет данные как документы JSON, тогда как MySQL представляет данные в строках и таблицах.

В MongoDB это будет выглядеть следующим образом:

{ 

    First Name: 'John',

    Last Name: 'Doe', 

    Employee_ID: 1234, 

    Status: 'Active'

}

Встраивание данных

MySQL не предлагает никаких вариантов для вложения или встраивания данных. Вы можете использовать JOIN, но они могут привести к увеличению размера таблиц с ненужными полями. Соединения также могут быть трудоемкими и требовательными к производительности.

MongoDB позволяет вставлять связанные данные. У вас также есть возможность ссылаться на данные из другого документа, если вы чувствуете, что документ может слишком сильно увеличиться. Пример включает:

{

    id: 13,

    name: ‘John Doe’,

    age: 23,

    address: {

        City: 'New Jersey,

        Street: 'London',

        Zip_code: 9876

    }

}

Язык запроса

MySQL использует SQL, тогда как MongoDB использует MQL, язык запросов MongoDB. В этом разделе мы сравним некоторые общие операции с базой данных в таблице Employee.

Выбор данных в MySQL

select * from employee;

Вставка данных в MySQL

INSERT INTO employee (employee_id, department, status)

VALUES (12, 'Sales', 'Active');

Обновление данных в MySQL

UPDATE employee SET department = 'Finance' WHERE employee_id = 14;

Выбор данных в MongoDB *

db.find.employee()

Вставка данных в MongoDB

db.employee.insert ({employee_id:'12', department.Sales', status:'Active'})

Обновление данных в MongoDB

db.employee.update({employee_id::{$eq:14}},{$set{ department:'Finance'}},{multi:true})

Оптимизация индекса

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

MongoDB просматривает каждый документ в коллекции, если нет индексов.

Развертывание базы данных

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

Скорость и производительность

Поскольку MongoDB — это база данных NoSQL, она быстрее MySQL.

Группировка данных

MongoDB хранит документы, принадлежащие одному классу или группе в коллекции. MySQL хранит строки похожих типов в таблице.

Кластеризация/репликация

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

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

Безопасность

MySQL использует модель безопасности на основе привилегий, которая аутентифицирует пользователей и дает им привилегии для определенных операций с базой данных. На транспортном уровне он использует закодированные соединения между серверами и клиентами.

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

Масштабируемость

MySQL масштабируется по вертикали, что означает, что вы можете увеличить нагрузку на один сервер, увеличив ОЗУ или характеристики ЦП. MongoDB масштабируется по горизонтали, то есть вы можете создать кластер MongoDB с несколькими серверами, добавив больше серверов в свою базу данных.

Поддержка и документация

MySQL предлагает пожизненную поддержку на трех уровнях:

  • Premier: от 1 до 5 лет.
  • Extended: 6-8 лет.
  • Sustain: от 9 лет.

Для каждого уровня он предлагает круглосуточную техническую поддержку, а также доступ к патчам, исправлениям ошибок, выпускам обслуживания и обновлениям. Документация MySQL поддерживается корпорацией Oracle.

MongoDB предлагает поддержку корпоративного уровня. Это дает вам возможность обновлять версии в удобном для вас темпе. Документация MongoDB поддерживается MongoDB, Inc.

Когда использовать MongoDB или MySQL

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

MySQL — хороший выбор, если:

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

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

MongoDB — хороший выбор, если:

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

MongoDB может быть правильным выбором, если вы работаете с аналитикой в ​​реальном времени, мобильными приложениями, Интернетом вещей и т.д., где у вас могут быть структурированные или неструктурированные данные, которые могут быстро расти.

Что учить дальше

В этой статье мы рассмотрели основы MySQL и MongoDB, а также некоторые ключевые различия между ними. Далее вам предстоит многому научиться, вы можете начать с: против нереляционных баз данных

  • Соединения SQL
  • Хранимые процедуры
  • Индексирование
  • NoSQL
  • Хранилища «ключ-значение»
  • Node.js драйверы



2021-02-15T10:17:51
Вопросы читателей

8 советов по оптимизации sql запросов

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

В этом руководстве мы рассмотрим 8 основных советов по SQL для оптимизации вашего SQL-сервера.

Совет 1. Выберите правильный тип данных для столбца

Каждый столбец таблицы в SQL имеет связанный тип данных. Вы можете выбирать из целых чисел, дат, переменных, логических значений, текста и т.д. При разработке важно выбрать правильный тип данных. Числа должны быть числового типа, даты должны быть датами и т.д. Это чрезвычайно важно для индексации.

Давайте посмотрим на пример ниже.

SELECT employeeID, employeeName

FROM employee

WHERE employeeID = 13412;

Вышеупомянутый запрос извлекает идентификатор и имя сотрудника с идентификатором 13412. Что, если тип данных для employeeID — строка? Вы можете столкнуться с проблемами при использовании индексации, поскольку это займет много времени, когда это должно быть простое сканирование.

Совет 2: Табличные переменные и объединения

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

Давайте посмотрим на пример соединения:

SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate

FROM Orders

INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;

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

Совет 3. Используйте условное предложение WHERE

Условные предложения WHERE используются для подмножества. Допустим, у вас есть такая ситуация:

-if SEQ_VAR in (1, 2, 3) & diff(DATE_VAR2, DATE_VAR1)≥ 0

— elif SEQ_VAR in (4, 5, 6) & diff(DATE_VAR2, DATE_VAR1) ≥1

— else diff(DATE_VAR2, DATE_VAR1) ≥2

С условным предложением WHERE это будет выглядеть так:

SELECT 

  DAT.ID_VAR,

  DAT.SEQ_VAR,

  DAT.NUM_VAR,

  DATE_VAR1,

  DATE_VAR2,

  TRUNC(DATE_VAR2) - TRUNC(DATE_VAR1) AS LAG_IN_DATES



FROM 

  CURRENT_TABLE      DAT 

WHERE

  (TRUNC(DATE_VAR2) - TRUNC(DATE_VAR1)) >= CASE WHEN SEQ_VAR IN (1,2,3) THEN 0 WHEN SEQ_VAR IN (4,5,6) THEN 1 ELSE 2 END 

ORDER BY ID_VAR, SEQ_VAR

Совет 4: используйте SET NOCOUNT ON

При выполнении операций INSERT, SELECT, DELETE и UPDATE, используйте SET NOCOUNT ON. SQL всегда возвращает соответствующее количество строк для таких операций, поэтому, когда у вас есть сложные запросы с большим количеством соединений, это может повлиять на производительность.

С SET NOCOUNT ON SQL не будет подсчитывать затронутые строки и улучшить производительность.

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

USE AdventureWorks2012;  

GO  

SET NOCOUNT OFF;  

GO  

-- Display the count message.  

SELECT TOP(5)LastName  

FROM Person.Person  

WHERE LastName LIKE 'A%';  

GO  

-- SET NOCOUNT to ON to no longer display the count message.  

SET NOCOUNT ON;  

GO  

SELECT TOP(5) LastName  

FROM Person.Person  

WHERE LastName LIKE 'A%';  

GO  

-- Reset SET NOCOUNT to OFF  

SET NOCOUNT OFF;  

GO

Совет 5: Избегайте ORDER BY, GROUP BY и DISTINCT

Использование ORDER BY, GROUP BYи DISTINCT только в случае необходимости. SQL создает рабочие таблицы и помещает туда данные. Затем он организует данные в рабочей таблице на основе запроса и затем возвращает результаты.

Совет 6. Полностью уточняйте имена объектов базы данных

Цель использования полностью определенных имен объектов базы данных — устранить двусмысленность. Полное имя объекта выглядит так:

DATABASE.SCHEMA.OBJECTNAME.

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

Поэтому вместо использования такого оператора:

SELECT * FROM TableName

Вам следует использовать:

SELECT * FROM dbo.TableName

Совет 7. Узнайте, как полностью защитить свой код

Базы данных хранят всевозможную информацию, что делает их основными целями атак. Распространенные атаки включают SQL-инъекции, когда пользователь вводит инструкцию SQL вместо имени пользователя и извлекает или изменяет вашу базу данных. Примеры SQL-инъекций:

textuserID = getRequestString("userID");

textSQL = "SELECT * FROM Users WHERE userID = " + textuserID;

Допустим, у вас есть это, вы textuserIDполучите ввод от пользователя. Вот как это может пойти не так:

SELECT * FROM Users WHERE userID = 890 OR 1=1;

Поскольку 1=1 всегда верно, он будет извлекать все данные из таблицы Users.

Вы можете защитить свою базу данных от SQL-инъекций, используя параметризованные операторы, проверки ввода, очистку ввода и т. Д. Как вы защищаете свою базу данных, зависит от СУБД. Вам нужно будет разобраться в своей СУБД и ее проблемах безопасности, чтобы вы могли писать безопасный код.

Совет 8: используйте LAG и LEAD для последовательных строк

Функция LAG позволяет запрашивать более одной строки в таблице, не вступая в таблицу к себе. Он возвращает значения из предыдущей строки таблицы.

LAG(expression [,offset[,default_value]]) OVER(ORDER BY columns)

Функция LEAD делает то же самое, но и для следующей строки.

LEAD(expression [,offset[,default_value]]) OVER(ORDER BY columns)

Отказ от использования самостоятельных соединений повышает производительность, поскольку уменьшается количество операций чтения. Но, вы должны проверить, как LEAD и LAG влияют на производительность запросов.

Что изучать дальше

В этой статье мы рассмотрели несколько важных советов по SQL, но всегда есть чему поучиться. Вот несколько хороших следующих шагов:

  • Оптимизация просмотров
  • Вложенные запросы
  • INSERT триггеры
  • Внешние ключи

Удачного обучения!



2021-02-12T21:57:11
Вопросы читателей

Каким образом можно изучить C++ с нуля?

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

C++ поможет вам привить хорошие навыки программирования (то есть ясный и последовательный стиль кодирования, комментировать код по мере его написания и ограничить видимость внутренних компонентов класса для внешнего мира), а поскольку абстракции практически нет, вам необходимо определить практически все атрибуты, необходимые для работы вашего кода.

В этом посте мы познакомим вас с дорожной картой для начинающих по изучению C++ по курсам https://tutortop.ru/courses_selection/kursy_razrabotki_na_c/ или самостоятельно, чтобы вы могли чувствовать себя уверенно, начиная свой путь.

Вот что мы рассмотрим сегодня:

  • Краткая история C++
  • Обзор инструментов и программного обеспечения C++
  • Введение в язык и синтаксис C++
  • C++ Часто задаваемые вопросы
  • Следующие шаги

Давайте начнем!

Краткая история C++

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

Язык программирования C++ был изобретен в 1979 году Бьярном Страуструпом, когда он работал над своей докторской диссертацией в Bell Labs. C++ был разработан как расширение языка программирования C, отсюда и его первоначальное название «C с классами». Целью Страуструпа было добавить гибкости и ООП (объектно-ориентированного программирования) к языку C. Он включил такие функции, как классы, строгая проверка типов, аргументы функций по умолчанию и базовое наследование. Название было изменено на C++ в 1983 году, которое происходит от ++оператора.

C++ был выпущен для коммерческого использования в 1985 году, но еще не был стандартизирован. В 1990 году был выпущен компилятор Borland Turbo C++, который добавил много новых функций. Первый международный стандарт C++ был опубликован в 1998 году, известный как C++ 98.

Сюда входит стандартная библиотека шаблонов, предоставляющая общие функции программирования и структуры данных. На основании отзывов комитет пересмотрел эти стандарты в 2003 году, а язык обновления был переименован в C++ 03.

В 2011 году, когда был завершен C++ 11, язык претерпел еще одну ревизию. Эта версия включает auto, среди прочего, такие функции, как поддержка Regex, новые библиотеки, новый синтаксис для циклов, ключевое слово и новые классы контейнеров. С тех пор были выпущены еще две ревизии: C++ 14 и C++ 17.

Обзор инструментов C++

Чтобы правильно создавать программы на C++ во время прохождения курсов https://tutortop.ru/courses_selection/kursy_po_c_razrabotke/, вам необходимо знать несколько инструментов и программного обеспечения: текстовый редактор, компилятор C++, компоновщик и библиотеки.

Текстовые редакторы

Чтобы написать программу на C++, вам понадобится текстовый редактор. Думайте об этом как о пустом документе Microsoft Word; именно здесь вы будете писать свой код. Подойдет любой текстовый редактор, некоторые даже встроены в ваш компьютер, но мы рекомендуем использовать текстовый редактор, предназначенный для программирования. Есть много вариантов, но некоторые из наиболее распространенных текстовых редакторов для разработчиков на C++:

  • Notepad ++: открытый доступ, легкий, простой
  • Atom: бесплатно, поддерживает множество языков, ограниченное количество плагинов
  • Sublime Text: 80 долларов, уникальные функции, простой макет
  • Bluefish: легкий, быстрый, мультиплатформенный, поддерживает множество языков.

Компиляторы

Компилятор просматривает ваш исходный код для выполнения двух важных задач: во-первых, он проверяет, соответствует ли ваш код правилам языка C++; во-вторых, он переводит ваш код в объектный файл. Некоторые известные компиляторы — это GCC, Clang и компилятор Visual Studio C++. Мы не рекомендуем Turbo C++, так как он немного устарел.

Компоновщик

Как только компилятор творит чудеса, объектный файл отправляется программе компоновщика, которая выполняет три задачи: во-первых, она объединяет все ваши объектные файлы в единую программу; во-вторых, он связывает файлы библиотеки с вашей программой; и, в-третьих, он выявляет любые проблемы с именами между файлами или ссылками.

Библиотеки

Библиотека — это, по сути, предварительно упакованный пакет кода, который можно использовать повторно. Библиотека C++ называется стандартной библиотекой C++, и она связана почти со всеми программами на C++. Вы также можете добавить в свою программу другие библиотеки, если вам не нужна стандартная библиотека C++ .

Интегрированная среда разработки (IDE)

Многие программисты на C++ используют IDE вместо текстового редактора и компилятора. IDE — это универсальный инструмент для программирования на C++. Он включает текстовый редактор, компоновщик, компилятор и библиотеки. Не существует подходящего или неправильного компилятора. Все сводится к вашим потребностям и тому, какой макет лучше всего подходит для вас. Некоторые популярные IDE:

  • Code::Blocks: бесплатные, востребованные функции, плагины пользователей
  • Visual Studio Code: открытый исходный код, отличные функции, кроссплатформенность
  • Eclipse: открытый исходный код, простой, кроссплатформенный, необходимо установить компоненты C++

Введение в язык и синтаксис C++

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

Язык разработан, чтобы предоставить вам большую свободу и силу, что и хорошо, и плохо. Вы полностью контролируете, как ваша система использует ресурсы; нет автоматического управления памятью, как в Java.

У вас есть возможность выбирать, как распределяется память (например, стек или куча); в C++ нет интерпретатора, который помешал бы вам писать ошибочный код.

Чтобы начать работу с C++, вам необходимо ознакомиться с синтаксисом. Это проложит путь для оставшейся части вашего пути к C++ и поможет вам создавать оптимизированные программы, которые будут безопасными и не содержат ошибок.

Давайте посмотрим на код C++!

Глядя на приведенный ниже код, вам может быть интересно, что все это такое и что это значит. Добро пожаловать в синтаксис C++.

Что такое синтаксис? Синтаксис подобен грамматике языка программирования. Это основная основа всего, что вы будете писать на C++.

Это правила, которые определяют, как вы пишете и понимаете код C++. Давайте посмотрим на пример кода, чтобы познакомиться с синтаксисом.

#include <iostream> //header file library 

using namespace std; //using standard library



int main() { //main function

  cout << "Hello World n"; // first object

  cout << "Learn C++ nn"; //second object with blank line

  cout << "Educative Team"; //third object 

  return 0; //no other output or return

} //end of code to exectute

Объяснение синтаксиса

#include <iostream>— это библиотека заголовочного файла. Заголовочный файл импортирует функции в вашу программу. По сути, мы просим программу скопировать содержимое из файла с именем <iostream>. Это означает поток ввода и вывода , и он определяет стандарты для объектов в нашем коде.

using namespace std означает, что мы используем имена объектов и переменных из стандартной библиотеки ( std). Этот оператор часто сокращается с помощью ключевого слова std и оператора ::. int main( ) используются для определения основной функции.

Это очень важная часть программ на C++. Функция по существу определяет действие для вашего кода. Все, что находится в фигурных скобках { }, будет выполнено.

cout это объект (произносится «видеть»). В этом примере он определяет наши выходные данные: строки слов. Мы пишем новый объект, используя cout во второй строке. Символ n заставляет текст исполняться в другой строке.

Включение двух nn создает пустое пространство. Выражением return 0 мы сообщаем программе, что ничего не вернется. Мы выводим только строки текста. Обратите внимание, что мы используем << оператор для именования наших объектов. Точка с запятой ; функционирует как точка.

Термины и словарь C++

Теперь, когда у нас есть представление о том, как выглядит код C++, давайте определим некоторые из упомянутых нами терминов и познакомим вас с некоторыми другими.

Ключевые слова

Ключевые слова — это заранее определенные имена, которые можно использовать для идентификации вещей в вашем коде. Ключевые слова — это идентификаторы определенных объектов, переменных или действий. Вы также можете создавать свои собственные ключевые слова. Вот несколько примеров ключевых слов:

  • goto
  • float
  • public
  • class(1)
  • int

Переменные

Переменные подобны контейнерам, в которых хранятся значения. Чтобы объявить переменную, вы должны присвоить ей значение type и  использовать правильное ключевое слово. Всем переменным в C++ необходимо имя или идентификатор. При создании идентификаторов необходимо соблюдать несколько основных синтаксических правил.

  • Имена чувствительны к регистру
  • Имена могут содержать буквы, цифры и символы подчеркивания.
  • Имена должны начинаться с буквы или символа подчеркивания.
  • Имена не могут содержать пробелы или специальные символы (!, #, @ И т. Д.)
  • Имена не могут использовать зарезервированные ключевые слова

Есть шесть различных типов переменных:

int myNum = 5;               // Stores integers (whole numbers)

float myFloatNum = 5.99;     // Stores decimals loating point number

double myDoubleNum = 9.98;   // Floating point number

char myLetter = 'D';         // Stores single characters

bool myBoolean = true;       // Stores Boolean, values with a true or false state

string myText = "Hello";     // Stores strings of text

Типы данных

Типы данных — это классификации различных типов данных, которые вы можете использовать в программе. Типы данных сообщают нашим переменным, какие данные они могут хранить. В C++ есть три типа данных:

Примитивные типы данных: это встроенные данные, которые вы можете использовать для объявления переменных. Они включают в себя integer, character, boolean, floating point, double floating point, void, и wide character.

Производные типы данных: они являются производными от примитивных типов данных. Они включают в себя function, reference, array, и pointer.

Типы данных, определяемые пользователем: они определяются вами, программистом.

Строки

Строки — это объекты в C++. Они представляют собой набор символов в " " кавычках, как наша строка "Hello World". Поскольку они являются объектами, мы можем выполнять с ними функции, такие как функция length( ), определяющая длину строки.

Операторы

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

  • Арифметические операторы используются для математических операций. Они работают как алгебраические символы.
    cout << x + y // This adds x to y

  • Операторы присваивания предназначены для присвоения значений нашим переменным.
    int x = 10 // This defines x as 10

  • Операторы сравнения сравнивают два значения.
    x <= y // Determines x is greater than or equal to y

  • Логические операторы определяют логику между значениями.
    x < 4 && x <9 // Will return true if both statements are true about x

Объекты

Объект — это набор данных, с которыми мы можем действовать. У объекта в C++ есть атрибут (его свойства) и метод (его возможности). Вы создаете объекты, используя класс. Думайте об этом как о чертеже объекта.

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

#include <iostream>

using namespace std;

class Dog //this is the name of our class

{

public:

  string name = "rover"; //this is an attribute

  string gender = "male";

  int age = 5;

};

int main() {

  Dog dogObj; //here we are making an object of Dog class

  cout << "Dog name is: "<<dogObj.name<<endl; //by using . operator we can access the member of class

  cout << "Dog gender is: "<<dogObj.gender<<endl; //accessing the public members of class Dog in main()

  cout << "Dog age is: "<<dogObj.age<<endl;

}

Функции

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

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

Чтобы создать функцию, вы должны дать ей имя (так называемое объявление) и круглые скобки ( ). Затем вы можете вызвать эту функцию в любой момент, используя это name( ).

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

Условные утверждения

Они позволяют выполнять проверки того, следует ли выполнять блок кода. В C++ есть четыре условных оператора:

  • if: при выполнении определенного условия будет выполнено определенное действие
  • else: вместо этого будет выполнено определенное действие, если это условие не выполнено
  • else if: новое условие будет проверено, если первое не выполнено
  • switch: проверяет переменную на соответствие списку значений

Циклы

Циклы похожи на условные операторы. Они выполняют блоки кода, пока достигается определенное условие. В C++ есть два типа циклов:

  • while циклы: этот цикл будет продолжать повторять ваш код, пока условие не возвращается true.
  • for циклы: это используется, когда вы знаете точное количество циклов в своем коде.

Теперь, когда у вас есть базовое представление о синтаксисе C++, давайте рассмотрим некоторые часто задаваемые вопросы и ресурсы, которые помогут вам начать путешествие по C++.

C++ FAQ

Сколько времени нужно, чтобы изучить C++?

Ну, это действительно зависит от того, что подразумевается под «учиться». Если вы серьезно относитесь к этому языку, то вы никогда не закончите его изучение. Разработчики могут посвятить всю свою карьеру C++ и при этом чувствовать, что им есть чему поучиться.

С учетом сказанного, если вы поработаете, вы сможете выучить достаточно C++ за 1-2 года и при этом оставаться отличным разработчиком.

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

Для чего используется C++?

C++ ориентирован на производительность больших систем, поэтому он используется в большом количестве программ и задач, где производительность важна. Это включает в себя, помимо прочего, операционные системы, разработку игр, 3D-анимацию, веб-браузеры (они используются в Firefox и Chrome), программное обеспечение для офисов, медицинское программное обеспечение и многое другое. C++ используется во всех играх Blizzard, большинстве консольных игр, Adobe Photoshop, Mozilla Thunderbird, технологиях PDF и сканерах МРТ.

В чем разница между C и C++?

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

В чем разница между C++ и C #?

C# — гораздо более новый язык (созданный Microsoft в 2000 году), он построен на C++, поэтому они имеют схожий синтаксис. Одно из основных различий между ними — их гибкость. C# показывает предупреждения компилятора при написании кода, чтобы уменьшить количество ошибок, а C++ — нет.

C# работает только в ОС Windows, а C++ может работать на любой платформе (MacOS, Linux, Windows и т. Д.). C# отлично подходит для мобильных и веб-приложений, а C++ известен производительностью и программами, которые работают напрямую с оборудованием. Они также немного по-другому обрабатывают управление памятью.

Схож ли C++ с другими языками программирования?

C++ является основой для многих других объектно-ориентированных языков программирования, таких как Java, JavaScript, Python, PHP, Rust, C # и других. Изучение синтаксиса C++ облегчит изучение других языков программирования.

Какой язык программирования лучше всего изучать?

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

Несколько преимуществ использования C++: широко распространенный синтаксис, вы вынуждены думать об управлении памятью, и он знакомит вас с множеством парадигм программирования, что является отличным способом расширить ваше мышление и найти новые подходы к решению проблем.

Насколько востребован C++? За С++ хорошо платят?

Да и да. Если вы потратите время, то будете вознаграждены. У разработчиков C++ уже есть высокие зарплаты, и ожидается, что они будут расти в ближайшие годы. C++ переживает период возрождения популярности, поскольку он отлично подходит для таких надежных приложений, как беспилотные автомобили и виртуальная реальность. Поскольку у C++ более крутая кривая обучения, чем у большинства языков, полученные вами навыки выделят вас при приеме на работу.



2021-02-11T15:37:54
Вопросы читателей

Как обновить Fedora Linux?

Fedora — это дистрибутив Linux, спонсируемый Red Hat. Лучше всего то, что он бесплатный и с открытым исходным кодом. Он также доступен для настольных компьютеров, серверов и систем Интернета вещей. У него другая среда рабочего стола, такая как KDE Plasma, XFCE, LXQT и т.д.

Что мы будем освещать?

В этом руководстве мы расскажем, как обновить Fedora 32 до Fedora 33. Мы увидим три различных способа обновления Fedora:

  • Обновление с помощью Software Center
  • Плагин обновления системы DNF
  • Обновление с помощью диспетчера пакетов только с dnf

Что нужно сделать перед началом

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

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

Метод 1. Обновление с помощью Software Center (рекомендуется для выпуска Fedora Workstation)

Это наиболее рекомендуемый способ обновления Fedora Workstation, а также самый простой способ для новичков. Начиная с версии Fedora 23 Workstation, уведомление о новом выпуске Fedora начинает появляться всякий раз, когда появляется новый стабильный выпуск. Просмотрите уведомление или перейдите в графический центр программного обеспечения Fedora, вам будет представлено простое окно обновления, как показано ниже:

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

Способ 2. Использование плагина обновления системы DNF

Это официально рекомендуемый метод обновления для всех установок Fedora, за исключением Fedora Workstation. При обновлении системы он использует dnf-plugin-system-upgrade. На самом деле это метод командной строки, поскольку он требует запуска некоторой команды. Хорошо, давайте посмотрим, как это будет работать.

Шаг 1. Сначала обновите вашу систему Fedora с помощью команды:

# dnf upgrade --refresh

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

Загрузка и установка всех обновлений может занять значительное время в зависимости от скорости вашего интернет-соединения и оборудования системы.

Шаг 2. После завершения установки обновлений перезагрузите систему.

Шаг 3. После перезагрузки системы откройте терминал и установите плагин: dnf-plugin-system-upgrade. Для этого используйте команду ниже:

# dnf install dnf-plugin-system-upgrade

Шаг 4. Теперь мы будем использовать плагин dnf для загрузки пакетов обновления выпуска. Выполните приведенную ниже команду:

# dnf system-upgrade download --refresh --releasever=33

Когда вы запустите указанную выше команду, она попросит запустить команду «dnf upgrade –refresh», чтобы убедиться, что система обновлена. Нажмите «y» и нажмите «Enter», чтобы можно было загрузить любое новое обновление.

Аргумент releasever используется для указания версии Fedora OS мы хотим установить. Здесь мы указали номер версии 33, которая на данный момент является последней доступной версией. Для обновления до разветвленной версии нам нужно использовать 34, или мы можем использовать rawhide для обновления до версии rawhide.

После завершения процесса обновления вы можете загрузить обновления, как показано ниже:

Как видите, это обновление версии имеет размер около 1,3 Гб, поэтому загрузка и установка всех этих обновлений может занять много времени. Подождите, пока процесс завершится.

Во время процесса обновления он импортирует ключ gpg и попросит вас подтвердить его, просто нажмите здесь ‘y’:

Процесс установки практически завершен, осталось выполнить команду:

# dnf system-upgrade reboot

Примечание. Не выполняйте никаких других команд, кроме «dnf system-upgrade reboot», в противном случае вам может потребоваться перезапустить весь процесс.

Система перезагрузится, чтобы применить загруженные обновления системы, как показано ниже:

После завершения процесса обновления вы должны увидеть новый экран входа в ОС Fedora 33, как показано здесь:

Мы можем проверить версию Fedora с помощью команды:

# cat /etc/os-release

Поскольку мы использовали версию Fedora 32 xfce, мы обновились до Fedora 33 xfce. Это должно быть то же самое, если вы обновляетесь с версии gnome, вам следует перейти на gnome Fedora.

Метод 3. Обновление с помощью диспетчера пакетов только с dnf (без использования подключаемого модуля обновления системы DNF)

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

Шаг 1. Откройте терминал, войдите в систему как пользователь root и выполните следующую команду:

# systemctl isolate multi-user.target

Шаг 2. На этом этапе мы должны обновить пакеты нашей текущей ОС Fedora с помощью следующей команды:

# dnf upgrade

Шаг 3. В случае обновления трех или более выпусков или обновления старой версии Fedora до Fedora 20 вам может потребоваться импортировать и установить ключ подписи пакета. В противном случае это не требуется для обновления двух или менее выпусков версии Fedora 20 или более поздней.

Итак, если требуется импортировать ключ, выполните следующую команду:

# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-23-x86_64

Не забудьте заменить «23» на ваш целевой выпуск, например 32 или 33 для последней версии Fedora. Также замените «x86_64» архитектурой вашей системы.

Шаг 4. Очистите весь кеш dnf, запустив:

# dnf clean all

Шаг 5 . Запустите процесс обновления командой:

# dnf --releasever=<target_release_number> --setopt=deltarpm=false distro-sync

Шаг 6. Установите новые пакеты для новой версии:

# dnf groupupdate 'Minimal Install'

Другие группы, такие как Рабочий стол GNOME, Инструменты администрирования, также можно обновить, как показано здесь:

# dnf groupupdate "GNOME Desktop"

# dnf groupupdate “Administration Tools”

Шаг 7. Установите загрузчик для вашего загрузочного устройства с помощью команды:

# /usr/sbin/grub2-install BOOTDEVICE

Загрузочным устройством обычно является /dev/sda или /dev/sdb, в зависимости от вашего жесткого диска. Если вы используете виртуальную машину, это может быть как dev/vda.

Шаг 8. Теперь удалите ненужные файлы кеша и другие избыточные файлы, очистив систему. Эти файлы часто находятся в следующих каталогах:

  • /var/cache/dnf
  • /var/lib/mock
  • /var/cache/mock

Заключение

В этом руководстве мы увидели, как обновить Fedora Linux тремя различными способами. Мы также узнали основное различие в использовании этих методов обновления. Это руководство было успешно протестировано на Fedora 32 для обновления до Fedora 33. Если вам понравилось это руководство, поделитесь им с другими.



2021-02-10T18:41:09
Вопросы читателей