Архив рубрики: Публикации

Как уменьшить влияние рекламы Google Adsense на показатели PageSpeed Insights

После моей публикации обзора VDSina один комментатор справедливо заметил, что не совсем корректно приводить в статье показатели PageSpeed Insights для пустого сайта. И приложил скриншот значений для этого блога. Которые, конечно, были далеки от идеала. Читать →

Как настроить mod_jk на HTTP-сервере Apache

Mod_jk — это модуль или коннектор Apache, который соединяет контейнер сервлетов Apache Tomcat с веб-серверами, такими как Apache, IIS и другими. Mod_jk — это полная замена старого модуля mod_jser, который обрабатывает связь между Tomcat и HTTP-серверами с использованием протокола Apache JServ.

Мы не будем углубляться в работу модуля mod_jk, поскольку это выходит за рамки данной статьи. Вместо этого мы сосредоточимся на том, как интегрировать его с HTTP-сервером Apache.

Узнайте больше о том, как работает mod_jk.

Примечание
В этой статье мы предполагаем, что у вас установлены и настроены серверы Apache Tomcat и Apache HTTPD. Если нет, просмотрите наши руководства по темам.

 

Шаг 1. Загрузите и установите mod_jk

Первым шагом является загрузка модуля mod_jk для Linux и его сборка для веб-сервера Apache. Если вы работаете в Windows, вы найдете предварительно созданный двоичный файл для настройки mod_jk.

Откройте терминал и введите команду:

wget https://dlcdn.apache.org/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.48-src.tar.gz

 

После загрузки пакета распакуйте его как:

tar xvf tomcat-connectors-1.2.48-src.tar.gz

 

Затем перейдите в извлеченный каталог /native как:

cd tomcat-connectors-1.2.48-src/native/

 

Находясь в собственном каталоге, выполните команду:

./configure -with-apxs=/usr/bin/apxs

 

Приведенная выше команда устанавливает путь к инструментам apxs для HTTP-сервера Apache. Если вы не знаете расположение инструментов apxs, используйте команду which как:

which apxs

/usr/bin/apxs

 

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

sudo apt install apache2-dev

# или

yum install httpd-devel

 

Следующим шагом является создание системного объектного файла для модуля mod_jk.

Используйте команду make в собственном каталоге.

make

 

После успешного завершения вы должны увидеть каталог apache-2.0, созданный в собственном каталоге.

Вы должны увидеть в каталоге файл mod_jk.so.

Скопируйте файл mod_jk.so в каталог модулей apache. Он должен находиться в /usr/lib/apache2/modules или /etc/httpd/modules.

sudo cp mod_jk.so /usr/lib/apache2/modules/

 

Шаг 2: Загрузите модуль mod_jk

После того, как мы добавили модуль mod_jk в каталог модулей Apache HTTPD, нам нужно загрузить его, отредактировав файл httpd.conf.

В каталоге conf отредактируйте файл httpd.conf с помощью вашего любимого текстового редактора? например Vim.

vim /etc/apache2/apache2.conf

 

Затем нам нужно добавить директиву include в файл конфигурации apache для загрузки модуля. Вы можете узнать, как загрузить модули, с помощью grep.

grep -i ^Include /etc/apache2/apache2.conf

 

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

IncludeOptional mods-enabled/*.load

IncludeOptional mods-enabled/*.conf

Include ports.conf

IncludeOptional conf-enabled/*.conf

IncludeOptional sites-enabled/*.conf

 

Из файла конфигурации выше, модули расположены в каталоге с поддержкой модов.

Перейдите в каталог /etc/apache2/mods-enabled и создайте файл mod_jk.conf.

cd /etc/apache2/mods-enabled/ && sudo touch mods_jk.conf

 

Внутри файла добавьте следующие записи.

LoadModule jk_module "/usr/lib/apache2/modules/mod_jk.so"

JkWorkersFile /etc/apache2/conf-enabled/workers.properties

JkShmFile     /etc/apache2/logs/mod_jk.shm

JkLogFile /etc/apache2/logs/mod_jk.log

JkLogLev JkMount  /stat/*  stat

JkMount  /*  balancer el debug

JkLogOptions +forwardKeySize +ForwardURICompat -ForwardDirectories

 

В JkWorkersFile мы определяем информацию об узле.

JkLogFile определяет расположение файла журнала.

JkLogLevel устанавливает уровень журнала для отладки

 

Шаг 3: Настройка файла рабочих

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

Вот пример конфигурации:

worker.list=stat

worker.jk-status.type=status

worker.jk-status.read_only=true



worker.tomcat_1.type=ajp13

worker.tomcat_1.port=9001

worker.tomcat_1.host=127.0.0.1



worker.tomcat_2.type=ajp13

worker.tomcat_2.port=9002

worker.tomcat_2.host=127.0.0.1



worker.tomcat_3.type=ajp13

worker.tomcat_3.port=9003

worker.tomcat_3.host=1270.0.0.1



worker.list=balancer

worker.balancer.type=lb

worker.balancer.balance_workers=tomcat_1,tomcat_2,tomcat_3

 

После этого у вас должен быть установлен и готов к работе модуль mod_jk на сервере Apache.

 

Заключение

В этой статье показано, как настроить и использовать модуль mod_jk на сервере HTTPD Apache. Вы можете узнать больше из официальных документов.



2021-09-26T22:08:14
Apache

Как включить ведение журнала отладки в Apache

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

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

Из этой статьи вы узнаете, как собрать подробную информацию о службе Apache Tomcat, включив режим DEBUG.

Примечание
В этой статье мы не рассматриваем установку Apache Tomcat. Ознакомьтесь с нашими руководствами по этой теме, чтобы узнать больше.

 

Как включить ведение журнала отладки Apache Tomcat в Linux

Чтобы включить ведение журнала отладки для Apache Tomcat в Linux, отредактируйте файл logging.properties. Файл находится в каталоге conf корневой установки Apache Tomcat.

Например:

vim /opt/tomcat/conf/logging.properties.

 

Найдите следующую запись:

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = FINE

 

Измените значение с FINE на ALL.

Последняя запись должна быть:

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = ALL

 

Сохраните файл и закройте. Вам нужно будет перезапустить Tomcat Service, чтобы включить уровни журнала.

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

  • SEVERE — Сообщения о серьезных сбоях
  • WARNING — возможные ошибки
  • INFO — Информационные журналы
  • FINE — Журналы трассировки
  • CONFIG — статические журналы конфигурации
  • FINEST — подробные журналы трассировки
  • FINER — подробные журналы трассировки
  • ALL — все сообщения (режим отладки)

 

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

org.apache.catalina.session.level=FINE

java.util.logging.ConsoleHandler.level=FINE

 

на:

org.apache.catalina.session.level=ALL

java.util.logging.ConsoleHandler.level=ALL

Как включить журнал отладки Apache Tomcat в Windows

Предположим, вы запускаете Apache Tomcat на машине с Windows. Вы можете использовать предоставленный интерфейс конфигурации для управления уровнями журнала.

Откройте меню «Пуск» и найдите «Настроить Tomcat».

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

Затем нажмите «Применить» и перейдите на вкладку «Общие». Наконец, нажмите «Остановить», а затем «Пуск», чтобы перезапустить службу Apache.

 

Заключение

В этой статье показано, как включить ведение журнала отладки для Apache Tomcat в системах Windows и Linux.

Спасибо за чтение.



2021-09-26T15:17:57
Apache

Настройка репликации PostgreSQL в контейнерах Docker

Мы рассмотрим процесс поднятия двух контейнеров с PostgreSQL и настройки репликации данных между ними. Использовать будем систему на базе Linux, однако, сам процесс настройки Docker и репликации не зависит от операционной системы.




Подготовка компьютера




На компьютере, где мы будем запускать наш кластер баз данных должен быть установлен Docker. Также мы сразу рассмотрим развертывание нужной нам инфраструктуры в docker-compose. Для установки необходимой одноименной платформы смотрим инструкцию Установка Docker на Linux.




После мы можем переходить к поднятию контейнеров.




Запуск контейнеров с СУБД




Как говорилось выше, мы будем поднимать наши контейнеры с помощью docker-compose.




Создадим каталог, в котором будем работать:




mkdir -p /opt/docker/postgresql




Переходим в него:




cd /opt/docker/postgresql




Создаем файл для docker-compose:




vi docker-compose.yml




---



services:



  postgresql_01:

    image: postgres

    container_name: postgresql_01

    restart: always

    volumes:

      - /data/postgresql_01:/var/lib/postgresql/data

    environment:

      POSTGRES_PASSWORD: postgres024



  postgresql_02:

    image: postgres

    container_name: postgresql_02

    restart: always

    volumes:

      - /data/postgresql_02/:/var/lib/postgresql/data

    environment:

      POSTGRES_PASSWORD: postgres024




* рассмотрим некоторый опции подробнее:







Запускаем наши контейнеры:




docker-compose up -d




Мы должны увидеть:




Creating postgresql_02 ... done

Creating postgresql_01 ... done




А если вывести список контейнеров:




docker ps




… мы должны увидеть наши два.




Теперь можно переходить к настройке репликации.




Настройка репликации




Условимся, что первичный сервер или master будет в контейнере с названием postgresql_01. Вторичный — postgresql_02. Мы будем настраивать потоковую (streaming) асинхронную репликацию.




Настройка на мастере




Подключаемся к контейнеру docker:




docker exec -it postgresql_01 bash




Заходим под пользователем postgres:




su - postgres




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




createuser --replication -P repluser




* в данном примере будет создаваться учетная запись repluser с правами репликации.




Система потребует ввода пароля. Придумываем его и набираем дважды.




Выходим из-под пользователя postgres:




exit




Выходим из контейнера:




exit




Открываем конфигурационный файл postgresql.conf:




vi /data/postgresql_01/postgresql.conf




Приводим к следующием виду некоторые параметры:




wal_level = replica

max_wal_senders = 2

max_replication_slots = 2

hot_standby = on

hot_standby_feedback = on




* где







Посмотрим подсеть, которая используется для контейнеров с postgresql:




docker network inspect postgresql_default | grep Subnet




В моем случае, ответ был:




"Subnet": "172.19.0.0/16",




Теперь открываем файл:




vi /data/postgresql_01/pg_hba.conf




И добавляем строку после остальных «host    replication»:




host    replication     all             172.19.0.0/16           md5




* в данном примере мы разрешили подключение пользователю replication из подсети 172.19.0.0/16 с проверкой подлинности по паролю.




Перезапустим докер контейнер:




docker restart postgresql_01




Настройка на слейве




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




rm -r /data/postgresql_02/*




* в данном примере мы удалим все содержимое каталога /data/postgresql_02.




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




Заходим внутрь контейнера postgresql_02:




docker exec -it postgresql_02 bash




Выполняем команду:




su - postgres -c "pg_basebackup --host=postgresql_01 --username=repluser --pgdata=/var/lib/postgresql/data --wal-method=stream --write-recovery-conf"




* где postgresql_01 — наш мастер; /var/lib/postgresql/data — путь до каталога с данными слейва.




Система должна запросить пароль для пользователя repluser — вводим его. Начнется процесс репликации, продолжительность которого зависит от объема данных.




Проверка




Смотрим статус работы мастера:




docker exec -it postgresql_01 su - postgres -c "psql -c 'select * from pg_stat_replication;'"




Смотрим статус работы слейва:




docker exec -it postgresql_02 su - postgres -c "psql -c 'select * from pg_stat_wal_receiver;'"




Источник: https://www.dmosk.ru/miniinstruktions.php?mini=postgresql-replication-docker



Этапы разработки сайтов – как быстро создать собственный сайт

Этапы разработки сайтов – как быстро создать собственный сайт

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

 

Обычный способ: три этапа работы

Первое, что нужно для создания сайта – идея. Далее действуем в три этапа.

 

Первый этап – дизайн

Этапы разработки сайтов – как быстро создать собственный сайт

 

Вы должны определиться с тем, как будет выглядеть сайт, продумать оформление. Здесь пригодится умение работать с графическим редактором, например, Adobe Photoshop или Corel Draw. Вы разработаете дизайн и подготовите основу для будущей работы. Но если планируется создание простого сайта с минимумом графики, то без этого можно обойтись и приступить сразу ко второму этапу.

 

Второй этап – верстка

Этапы разработки сайтов – как быстро создать собственный сайт

 

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

Второй этап очень важен, поскольку html-страницы являются основой сайта. Можно действовать двумя способами:

  • самостоятельно написать html-код, воспользовавшись текстовым редактором. Подойдёт Microsoft Word или даже Блокнот. Для этого нужно хорошо знать язык html.
  • использовать визуальный редактор, например, Dreamweaver. В этом случае достаточно лишь знать основы html. Это оптимальный способ создавать код страницы.

 

Третий этап – программирование

Этапы разработки сайтов – как быстро создать собственный сайт

Source: jetbrains.com

 

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

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

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

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

 

Быстрое создание собственного сайта

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

Этапы разработки сайтов – как быстро создать собственный сайт

 

Найти подходящий шаблон можно в Сети, подобрав его под тематику своего сайта. Далее останется только добавить свой текст и названия пунктов в меню там, где это нужно. Как только шаблон будет отредактирован – готовый сайт можно загрузить на хостинг. Он готов к работе.

Ещё один вариант быстро создать собственный сайт – скопировать любой понравившийся и изменить его. Изменения обязательны, иначе это будет считаться воровством. Потому действуйте так:

  • сохраните страницу понравившегося сайта, выбрав пункт «сохранить как…»;
  • отредактируйте страницу, открыв ее в специальной программе, например используйте редактор Dreamweaver.

Самый быстрый способ создания собственного сайта

Есть еще один способ сделать сайт в самые сжатые сроки – использовать конструктор или Систему Управления Контентом (CMS).

Этапы разработки сайтов – как быстро создать собственный сайт

 

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

Конструктор сайтов – лучшее решение для самых неопытных вебмастеров. Для их использования не нужно иметь никаких специальных знаний. Будущий сайт разместится на платном или бесплатном хостинге. Вам достаточно подобрать шаблоны по количеству страниц сайта и наполнить их простым текстом. В качестве одного из лучших конструкторов можно привести в пример – Wix. Многие независимые рейтинги по конструкторам сайтов считают Wix наиболее совершенным онлайн конструктором. И к тому же он является бесплатным.

Установка CMS – несложный процесс, и, как правило, он занимает примерно минуту. Вы получите сайт, который далее нужно будет заполнить информацией. Это тоже делается просто – если умеете использовать Microsoft Word, то справитесь легко. Выбирайте Joomla или WordPress – это удобные и популярные системы управления контентом.

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

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

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

 

Что в итоге выбрать?

У каждого способа создания собственного сайта есть плюсы и минусы.

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

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

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



2021-09-23T17:30:58
Программирование

Что должен знать аналитик данных?

Аналитика данных –это прикладной предмет, объединяющий статистику, математику, систему управления базами данных, информатику, а также навыки, связанные с предметной областью. Специалисту анализа данных нужно обладать некоторыми знаниями обо всех сферах, а также быть экспертом в нескольких из них. Одно из основных отличий аналитики от ИТ заключается в том, что специалисту по данным нужно хорошо понимать продукт.

Аналитика данных связана с предоставлением полезной информации из обширных бизнес-данных, которые организация может использовать для получения выгод путем принятия обоснованных решений. Еще один важный аспект, в котором аналитика отличается от ИТ, заключается в том, что опыт в аналитике дает гибкость для работы над разными типами бизнес-задач, где по прошествии определенного времени (например 15-ти летнего опыта), технические навыки могут не соответствовать желаемым, и кому-то нужно взять на себя управление проектами.

 

В каких отраслях нужна аналитика данных?

Область науки о данных привлекает профессионалов из различных секторов, объединяющих как ИТ, так и не ИТ, поскольку возможности роста в некоторых ранее бурно развивающихся отраслях со временем стали очень ограниченными из-за быстрых преобразований в бизнес-сценариях. Сдвиг парадигмы в распространенных технологиях в деловом мире VUCA (этим термином обозначается неопределенность и быстрая изменчивость всех явлений в настоящем мире) потребовал появления новых технологий и наборов навыков для поддержки в новую эру. Для этого необходимо, чтобы многие профессионалы, обладающие навыками в области устаревших ИТ-технологий, были переведены на использование аналитики и анализа данных нового поколения. Возникает вопрос, как кто-то с традиционными знаниями или новичок из секторов, не связанных с ИТ, может быстро вооружиться навыками Data Science. Эта статья должна пролить свет на эту часть.

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

 

Какие знания требуются от аналитика данных?

Основные требования к этой профессии можно посмотреть в соответствующих вакансиях или программах онлайн обучения. Для удобства вы можете использовать подборку онлайн-курсов по аналитике данных на этом сайте https://kursberry.ru/category/online-kursy-po-analitike для того, чтобы подробнее ознакомиться с учебными материалами.

Excel — это старая рабочая лошадка, удовлетворяющая 70% потребностей анализа данных уже более полутора десятилетий. Некоторые функции Excel, такие, как Goal Seek, Pivot Table и т. д., принесли огромную пользу бизнесу для получения полезной информации из большого массива данных. Чтобы начать карьеру в аналитике, необходимо знать все полезные функции Excel.

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

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



Выводная статистика и язык программирования

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

Базовое программирование на Python — программирование на Python к настоящему времени стало неотъемлемой частью науки о данных. Чтобы вступить в мир аналитики, нужно знать хотя бы один язык программирования. Для тех, кто более заинтересован в решении задач на основе статистики, язык программирования R более предпочтителен, библиотека статистических функций становится богаче, однако тем, кто хочет выполнять высокопроизводительные операции в машинном обучении и искусственном интеллекте, следует выбрать Python.

 

Применение знаний на практике и машинное обучение

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

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

 

Где можно обучиться на аналитика данных?

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

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



2021-09-23T16:54:25
Python