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

Сжатие изображений: пресеты WebP, HEIC, AVIF, JPEG XL

Как время летит. Восемь лет назад я написал сообщение в блоге об эксперименте с изображениями WebP на веб-сайте End Point, чтобы описать и продемонстрировать, как формат изображения WebP может хранить изображение эквивалентного качества в гораздо меньшем размере файла, чем старые форматы JPEG, PNG и GIF.

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

 

Могу ли я использовать его?

Поскольку iOS 14 и macOS 11 (Big Sur) от Apple стали доступны в конце 2020 года, формат изображений WebP теперь работает во всех поддерживаемых в настоящее время основных операционных системах и браузерах: Linux, Windows и macOS, работающих под управлением Chromium, Chrome, Brave, Edge, Opera, Firefox, и Safari.

Прошло всего около 10 лет! 😁

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

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

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

 

Как создавать изображения WebP?

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

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

GIMP (программа обработки изображений GNU) поддерживает изображения WebP примерно с 2017 года, а Adobe Photoshop изначально не поддерживает, но может использовать бесплатный плагин WebPShop.

Самый старый способ преобразования изображений в WebP, который до сих пор очень полезен для пакетной обработки или тонкой настройки, — это конвертер WebP от Google «cwebp».

 

Настройки cwebp

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

Запустите эту команду, чтобы увидеть множество вариантов:

cwebp -longhelp


 

Или прочтите то же самое в его онлайн-документации.

Там, среди прочего, вы увидите параметр -z, который активирует предустановленные функции для кодирования без потерь, с целочисленным уровнем, выбранным от 0 до 9, где 0 — самый быстрый, но сжимает меньше, а 9 — самый медленный, но сжимает лучше. Используйте это для замены файлов PNG, если вы вообще не хотите ухудшения качества изображения.

В документации также показаны полезные функции -presetи -hintпараметры сжатия с потерями, аналогичные тому, что делает JPEG, но лучше:

-preset <string> ....... preset setting, one of:

                          default, photo, picture,

                          drawing, icon, text



-hint <string> ......... specify image characteristics hint,

                         one of: photo, picture or graph


 

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

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

Комментарии к варианту -preset:

WEBP_PRESET_PICTURE,  // digital picture, like portrait, inner shot

WEBP_PRESET_PHOTO,    // outdoor photograph, with natural lighting

WEBP_PRESET_DRAWING,  // hand or line drawing, with high-contrast details

WEBP_PRESET_ICON,     // small-sized colorful images

WEBP_PRESET_TEXT      // text-like


 

И комментарии к варианту -hint:

WEBP_HINT_PICTURE,    // digital picture, like portrait, inner shot

WEBP_HINT_PHOTO,      // outdoor photograph, with natural lighting

WEBP_HINT_GRAPH,      // Discrete tone image (graph, map-tile etc).


 

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

 

Пакетное преобразование

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

Простой bashскрипт хорошо работает для обработки множества изображений подряд:

for infile in Screenshot*.png

do

    echo $infile

    base=$(basename "$infile" .png)

    cwebp -preset picture -v "$infile" -o "$base".webp

done


 

Если у вас есть много изображений для преобразования в WebP и вы хотите сделать несколько одновременно, чтобы сделать это быстрее, вы можете использовать GNU parallel.

Мои скриншоты при преобразовании из PNG в WebP постоянно занимают около 3% исходного пространства, в 33–35 раз меньше! И качество примерно такое же. Удивительно.

 

Конкуренты WebP

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

 

HEIC

Подмножество HEIC (High-Efficiency Image Container) стандарта HEIF (High Efficiency Image File Format) использует высокоэффективное кодирование видео (HEVC, H.265) для хранения изображений с суффиксом .heic.

По сравнению с JPEG, HEIC предлагает приятные преимущества меньшего размера файла при том же уровне качества (примерно половина размера эквивалентного JPEG) и поддержку анимации (для замены GIF).

С другой стороны, HEIC обременен патентами, которые ограничивают его использование в крупных коммерческих проектах даже на устройствах, лицензированных для потребительского использования. Он также медленнее кодирует/декодирует. И, что касается архивариусов, HEIC показывает серьезное визуальное повреждение всего изображения, если часть файла повреждена. Напротив, в поврежденных файлах JPEG визуальное повреждение обычно локализовано в отдельных небольших квадратных областях, а не во всем изображении.

HEIC используется в операционных системах Apple с момента выпуска в 2017 году iPhone 7, iOS 11 и macOS 10.13 (High Sierra). Позднее поддержка была добавлена ​​в Windows 10, Android 9 и Ubuntu 20.04.

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

Так что на данный момент HEIC в основном используется Apple для более эффективного хранения фотографий на своих мобильных устройствах.

 

AVIF

AVIF (формат файла изображения AV1) конкурирует с HEIC и, что сбивает с толку, использует тот же формат файла контейнера HEIF, что и HEIC. Эта путаница на практике уменьшается за счет использования отдельного расширения файла..avif.

AVIF поддерживается в текущих версиях Chrome, Firefox и Opera. Поддержка была добавлена ​​в WebKit в 2021 году, но до сих пор не появилась в Safari. Он также работает в новых версиях VLC, GIMP, Windows, Android и т. д.

У Netflix есть очень подробный пост в блоге , в котором сравниваются AVIF и JPEG и демонстрируются многочисленные преимущества AVIF.

 

JPEG XL

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

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

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

Сообщалось, что JPEG XL, как ожидается, станет доступен в своей окончательной стандартной форме в 2022 году, а поддержка уже доступна в предварительной форме в некоторых программах (см . статью об JPEG XL в Википедии ).

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

 

Используйте WebP прямо сейчас

Таким образом, все другие новые параметры еще не могут использоваться для обычных веб-изображений. WebP в настоящее время является очевидным выбором, хотите ли вы заменить фотографии JPEG с потерями, заменить без потерь изображения PNG или заменить анимацию GIF.

Наши разработчики настроили на сервере автоматическое преобразование высококачественных PNG-оригиналов в WebP или JPEG на стороне приложения на лету, при этом размер изображения зависит от размера области просмотра браузера. И мы работали с Cloudinary, Cloudflare и другими CDN, чтобы использовать их услуги преобразования изображений. Мы также готовы помочь с вашими проектами.



2022-03-10T22:51:04
Программное обеспечение

Алгоритм Прима

Минимальное связующее дерево:

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

Мы можем нарисовать остовное дерево с помощью следующих двух методов:

  1. Алгоритм Крускала
  2. Алгоритм Прима

 

В этой статье мы собираемся обсудить алгоритм Прима. Алгоритм Крускала будет рассмотрен в следующей статье.

 

Алгоритм Прима:

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

 

Шаги алгоритма Прима:

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

  • Шаг 1: Выберите любую исходную вершину в графе.
  • Шаг 2: Найдите ребро минимального веса, которое примыкает к источнику, а затем соедините его с остовным деревом.
  • Шаг 3: Повторяйте шаг 2, пока все узлы не будут добавлены в минимальное остовное дерево.

 

Пример :

Ниже приведен пример поиска минимального остовного дерева с использованием алгоритма Прима.

1. Выбираем любой случайный узел из графа G и добавляем его в MST (минимальное остовное дерево). Мы выбираем здесь узел 0.

Алгоритм Прима

 

2. Теперь мы выбираем то ребро, которое является смежным с исходным узлом (0), но с наименьшим весом, а затем добавляем этот узел с наименьшим весом в минимальное остовное дерево.

Алгоритм Прима

 

3. Теперь мы выбираем то ребро, которое является смежным с исходным узлом (0 или 1), но с наименьшим весом, а затем добавляем этот узел с наименьшим весом в минимальное остовное дерево.

Алгоритм Прима

 

4. Теперь мы выбираем то ребро, которое является смежным с исходным узлом (0, 1 или 3), но с наименьшим весом, а затем добавляем этот узел с наименьшим весом в минимальное остовное дерево.

Алгоритм Прима

 

5. Теперь мы выбираем то ребро, которое является смежным с исходным узлом (0, 1, 3 или 4), но с наименьшим весом, а затем добавляем этот узел с наименьшим весом в минимальное остовное дерево.

Алгоритм Прима

 

6. Теперь мы выбираем то ребро, которое является смежным с исходным узлом (0, 1, 3, 4 или 6), но с наименьшим весом, а затем добавляем этот узел с наименьшим весом в минимальное остовное дерево.

Алгоритм Прима

 

7. Теперь мы выбираем то ребро, которое является смежным с исходным узлом (0, 1, 3, 4, 6 или 2), но с наименьшим весом, а затем добавляем этот узел с наименьшим весом в минимальное остовное дерево.

Алгоритм Прима

 

Выше наш окончательный MST (минимальное остовное дерево), а общая стоимость равна 6.

 

Программа C++ Prim MST (минимальное связующее дерево):

#include<iostream>



#include<vector>



#include<queue>



#include<algorithm>



#include<cstring>



typedef std :: pair<int,int> SII;



typedef std :: vector<SII> SSII;



int PrimsMST (int sourceNode, std :: vector<SSII> & graph){



    // В этой очереди будут храниться сведения о каждом узле

    // вместе с их весовой ценностью.



    std :: priority_queue<SII, std :: vector<SII>, std :: greater<SII>> k;



 



    k.push(std :: make_pair(0, sourceNode));



    bool nodesAdded[graph.size()];



    memset(nodesAdded, false, sizeof(bool)*graph.size());



    int mst_tree_cost = 0;



    while (!k.empty()) {



        // We are selecting here the node which has minimum cost



        SII itemNode;



        itemNode = k.top();



        k.pop();



        int Node = itemNode.second;



        int Cost = itemNode.first;



        // Здесь мы проверяем, не был ли какой-либо узел добавлен в MST,



        // затем добавляем этот узел.



        if (!nodesAdded[Node]) {



            mst_tree_cost += Cost;



            nodesAdded[Node] = true;



            // Выполните итерацию по узлам negibour, которые недавно были удалены



            // из очереди приоритетов.



            // и добавлен в MST, который еще не добавлен



            for (auto & pair_node_cost : graph[Node]) {



                int adjency_node = pair_node_cost.second;



                if (nodesAdded[adjency_node] == false) {



                    k.push(pair_node_cost);



                }



            }



        }



    }



    return mst_tree_cost;



}



    int main(){



    // Подробная информация о графике со стоимостью и узлом смежности.



    SSII fromNode_0_in_graph_1  = { {1,1}, {2,2}, {1,3},



    {1,4}, {2,5}, {1,6} };



    SSII fromNode_1_in_graph_1   = { {1,0}, {2,2}, {2,6} };



    SSII fromNode_2_in_graph_1   = { {2,0}, {2,1}, {1,3} };



    SSII fromNode_3_in_graph_1 = { {1,0}, {1,2}, {2,4} };



    SSII fromNode_4_in_graph_1  = { {1,0}, {2,3}, {2,5} };



    SSII fromNode_5_in_graph_1  = { {2,0}, {2,4}, {1,6} };



    SSII fromNode_6_in_graph_1   = { {1,0}, {2,2}, {1,5} };



    int num_of_nodes = 7; // Total Nodes (0 to 6)



    std :: vector<SSII> primsgraph;



    primsgraph.resize(num_of_nodes);



    primsgraph[0] = fromNode_0_in_graph_1;



    primsgraph[1] = fromNode_1_in_graph_1;



    primsgraph[2] = fromNode_2_in_graph_1;



    primsgraph[3] = fromNode_3_in_graph_1;



    primsgraph[4] = fromNode_4_in_graph_1;



    primsgraph[5] = fromNode_5_in_graph_1;



    primsgraph[6] = fromNode_6_in_graph_1;



    // Как мы уже знаем, мы должны выбрать исходную вершину,



    // поэтому мы начинаем с узла вершины 0.



    std :: cout << "Общая стоимость минимального связующего дерева после алгоритма Прима : "



                "" << PrimsMST(0, primsgraph) << std :: endl;





    return 0;



}

Выход:

Общая стоимость минимального связующего дерева после алгоритма Прима : 6



Process finished with exit code 0

Временная сложность алгоритма MST Prim:

  1. Общее время, необходимое для обработки и выбора определенного узла очереди с приоритетом, который еще не добавлен в MST, составляет logV. Но поскольку это работает для каждой вершины, общая временная сложность составляет V (logV).
  2. Граф неориентированный, и общее количество ребер будет 2E. Поскольку мы должны поместить узлы в приоритетную очередь, это займет журнал общего времени (V). Однако, поскольку у нас есть в общей сложности 2E ребра, наша общая операция отправки будет 2E (log (V)).
  3. Общая сложность после операции 1 и 2 составляет O( (E + V ) log (V )).

 

Заключение:

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



2022-03-10T18:08:39
Программирование

Как получить свой виртуальный номер сегодня. Прием СМС онлайн

Хотите получить виртуальный номер быстро, не тратя лишних нервов и денег? Читайте нашу статью.

 

Что такое виртуальный номер

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

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

 

Получите виртуальный номер за 5 минут

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

 

6 причин использовать виртуальный номер

  1. Вам не нужна SIM-карта

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

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

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

    Кстати, Online sim заботится о подборе нужного номера для каждой заявки. Так что даже если у вас возникли проблемы с покупкой, служба техподдержки всегда готова срочно помочь в онлайн-чате на сайте или в Telegram.
  5. Ваши данные защищены службой продажи виртуальных номеров.

    Все ваши регистрации, покупки и заполнение форм остаются строго конфиденциальными. Ваш номер мобильного телефона позволяет в особых случаях идентифицировать все ваши данные, где вы когда-либо регистрировались. Вот почему так важно не забывать о безопасности и сохранении конфиденциальности ваших личных данных.
  6. Безопасность данных в Online sim

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

 

Как заказать СМС онлайн на виртуальный номер в Online sim

Три простых шага для получения смс бесплатно через интернет:

 

01. Закажите номер в кабинете

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

 

02. Используйте его для получения смс

Скопируйте выданный номер и вставьте в форму регистрации ВКонтакте для получения СМС с кодом регистрации.

 

03. Принимайте смс с сайтов

После поступления СМС сообщения вам остается скопировать код подтверждения и использовать его для завершения активации аккаунта.



2022-03-10T17:51:47
Сети

Базовое имя Python

Python предоставляет различные методы взаимодействия с операционной системой для управления именами файлов и именами каталогов через модуль os. В этой статье обсуждается один из встроенных методов Python, используемых для получения базового имени файла по заданному пути: метод os.path.basename(), который позволяет нам извлечь имя файла из указанного пути.

Мы должны использовать os.path.basename() в коде, импортируя модуль os. Этот метод os.path.basename() дополнительно использует функцию split() для разделения строки пути на пару, которая будет возвращать начало и конец. Головная часть предназначена для имени каталога, а хвостовая часть возвращается методом os.path.basename(). Давайте подробнее об этом методе.

 

Синтаксис базового имени Python:

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

Os.path.basename(path)

 

Os.path — это подрежим модуля os для манипулирования именами путей. Итак, сначала нам нужно импортировать модуль os для этого метода базового имени.

 

Параметр передается в базовом имени python:

Этот метод os.path.name() принимает только указанную строку пути, представляющую путь к файловой системе.

 

Возвращаемое значение в базовом имени python:

os.path.basename() вернет значение в строке заданного пути, которое является базовым именем файла. Теперь у нас будет простой пример реализации того, как работает этот метод os.path.basename().

 

Пример 1:

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

В окне используется разделитель с обратной косой чертой ‘’; мы можем проверить или подтвердить этот разделитель с помощью метода os.path.sep(). Переменная «file_dir» имеет путь «UsersabcDownloadsMy Window», который является именем каталога файла, а «file_name» имеет путь, заданный «UsersabcDownloadsMy Windowindex.html». Обе переменные возвращают базовое имя файла с синтаксисом Window. Мы также будем печатать разделитель окон с помощью метода os.path.sep().

import os.path



file_dir = os.path.basename("UsersabcDownloadsMy Window")



print(file_dir)



file_name = os.path.basename("UsersabcDownloadsMy Windowindex.html")



print(file_name)



print(os.path.sep)

 

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

Теперь у нас есть разделитель Unix, используемый в этом примере ниже. Unix использует косую черту ‘/’ в качестве разделителя пути. Мы можем получить этот разделитель, напечатав метод os.path.sep().

import os.path



file_dir = os.path.basename("/Downloads/ My Unix")



print(file_dir)



file_name = os.path.basename("/Downloads/ My Unix /unix.txt")



print(file_name)

 

Пример 2:

Давайте рассмотрим пример извлечения имени файла с помощью метода os.path.basename(). Мы импортировали os.path для доступа к методу os.path.basename() в этом конкретном примере. У нас есть «базовое имя», которое вернет базовое имя файла, которое мы назначили в os.path.basename. С оператором print() у нас будет базовое имя.

import os.path



basename = os.path.basename("/home/example/exampleFile.txt")



print(basename)

 

Здесь у нас есть «/home/example/» в качестве имени пути и «exampleFile.txt» в качестве базового имени.

 

Пример 3:

В этом примере мы найдем базовое имя каталога или имени папки. Имя папки или каталога также имеет базовое имя в полном пути. В этом примере у нас есть «Документы» в качестве базового имени из пути «/home/MyDocuments/Documents», который передается в os.path.basename(). Переменная ‘basename’ вернет вывод, который вызывается в функции print().

import os.path



basename = os.path.basename("/home/MyDocuments/Documents")



print(basename)

 

Мы получим «Документы» в качестве базового имени из приведенного выше кода.

 

Пример 4:

Чтобы получить базовое имя из URL-адреса, нам нужно импортировать библиотеку из модуля стандартного пакета urllib, который называется urlparse. Это поможет нам разделить строки URL на компоненты или снова объединить строку URL в компоненты.

В этом примере будет получено базовое имя URL-адреса для формирования переменной «URL», которая имеет строковый URL-адрес «https://docs.python.org/3/download.html». URL-адрес передается в метод urlparse() в качестве аргумента, который разделит URL-адрес на части. Этот анализ URL-адреса хранится в новой переменной «x», которая будет отображать строку разделенного пути URL-адреса. На этот раз мы используем os.path.basename() через оператор печати.

import os



from urllib.parse import urlparse



url = "https://docs.python.org/3/download.html"



x = urlparse(url)



print(x.path)



print(os.path.basename(x.path))

 

Отображение разделенной строки URL-адреса и базового имени из URL-адреса.

 

Пример 5:

В этом примере используется метод os.path.split() для возврата пары «голова» и «хвост» по отдельности. Для этого мы должны передать указанный путь в качестве аргумента в метод os.path.split(). Мы получим «голову» и «хвост» отдельно через оператор печати.

import os



path = "/Users/Desktop/Article/python/code.py"



head_tail = os.path.split(path)



print(head_tail)

 

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

 

Пример 6:

Мы извлекли базовое имя и расширение, определенные в этом примере. Мы будем извлекать имя файла без расширения с помощью другого метода os.path.splitext(). Этот метод даст только базовое имя, определенное в os.path.basename().

Мы назначили путь как «home/example/example3.txt» в переменной «basename». Используйте индекс как «0», чтобы получить базовое имя без расширения.

import os.path



path_name="home/example/example3.txt"



basename = os.path.splitext(os.path.basename(path_name))[0]



print(basename)




 

У нас есть вывод basename как «example3» без расширения на экране консоли.

 

Заключение

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



2022-03-10T17:23:26
Python

Python. встроенный If-Else

Язык программирования Python удобен для чтения и эффективен при написании операций. В этой статье обсуждаются встроенные условные операторы if-else. В Python нет тернарного оператора, поэтому мы используем if-else в одной строке, что имеет тот же эффект, что и тернарный оператор. Это условие оценивает условия в состоянии истинности или ложности.

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

 

Синтаксис встроенного if-else в Python

Чтобы написать встроенный оператор if-else, мы должны следовать этому синтаксису.

<expression1> if <condition> else <expression2>

 

В этом синтаксисе <expression1> будет возвращено или выполнено, если условие истинно, иначе будет возвращено или выполнено <expression2>, и эти условия всегда выполняются слева направо.

 

IndentationError во встроенном if-else

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

 

Пример 1:

Давайте начнем с простого примера того, как работает это встроенное if-else. Помните, что условия оцениваются слева направо. Здесь мы определяем переменную «a» равной «5», а a_output имеет условие if-else, которое мы передаем функции print() для отображения вывода. Встроенное условие if-else здесь вернуло «20», если переменная «a» равна «20», иначе вернуло «10».

a = 5



a_output = "20" if  a==20 else "10"



print(a_output)

 

Итак, у нас есть «а» равно «5», поэтому условие ложно, и мы получаем 10 после выполнения этого кода.

 

Пример 2:

В этом примере у нас есть две переменные во встроенном операторе as. В коде мы определяем переменную как «x» и присваиваем значение «20». Кроме того, у нас есть еще одна переменная, поскольку «y» равно «10». Таким образом, условие «y» равно «10», если «x» меньше «20», иначе будет напечатан «0». Что ж, передайте «x» через условие, поэтому слева направо, если «x» меньше «20», ответ будет «нет», поэтому мы ожидаем, что «y» будет «0». Давайте запустим пример и посмотрим на значение ‘y’.

x=20



y=10  if x<20 else '0'



print(y)

 

Здесь «у» равен «0», потому что условие ложно, так как «х» не меньше «20», он равен «20».

Из приведенного выше кода мы получили значение «y» как «0». Теперь, что, если «x» меньше «20», взяв значение «x» как «19». Мы ожидали, что «y» будет «10». Мы можем увидеть значение «y», напечатав значение.

x=19



y=10  if x<20 else '0'



print(y)

 

Поскольку у нас есть выходное значение «y» равное 10, условие истинно, поскольку «x» меньше «20».

 

Пример 3:

В этом конкретном примере у нас есть код строки. Присвоив значение «красный» переменной «цветок» и применив встроенное условие if-else, которое печатает «Цветок белый», если переменная «цветок» равна «белому», иначе будет напечатано выражение «цветок не белый». .

flower='red'



print("Цветок белый" if flower == 'white' else "Цветок не белый")

 

Значение цветка красное; в результате условие не выполняется, и реализуется оператор в другой части. Вы можете увидеть вывод ниже, который печатает «Цветок не белый».

 

Пример 4:

Все примеры представляют собой просто встроенные условия if-else, но сейчас мы обсудим вложенные условия if-else. Мы берем пример одобрения автомобильных прав для людей, имеющих возраст, равный 18 или старше 18 лет.

У нас есть переменная «age», которая принимает данные от пользователя. В условном встроенном заявлении будет напечатано «вы не имеете права подавать заявку», если возраст младше 16 лет. Если возраст составляет от 16 до 18, будет напечатано «нужно подождать, пока вам исполнится 18+»; в противном случае будет показано «вы имеете право подать заявку».

age = int(input("Введите ваш возраст = "))



message= 'Вы не имеете права подавать заявку' if age<16 else 'вам нужно подождать, чтобы вам исполнилось 18+' if 16<age<=18 else 'вы имеете право подать заявку'



print(message)

 

Вывод этого кода показывает сообщение «Вы не имеете права подавать заявку», поскольку пользователь вводит возраст 15 лет, что меньше 16 лет.

Теперь, когда пользователи вводят возраст 17 лет, мы печатаем «вам нужно подождать, чтобы вам исполнилось 18+», поскольку возраст составляет от 16 до 18.

На экране консоли было напечатано «вы имеете право подать заявку», поскольку возраст старше 18 лет.

 

Пример 5:

Это пример чрезвычайно очевидного случая в реальном времени, когда мы должны оценить несколько условий. Здесь мы должны выделить оценку из набранных баллов; мы определяем переменную «AndreyEx» и инициализируем ее значением «80».

Условие хранится в переменной с именем «Результат», которая будет печатать оценки от «А» до «Неудачно» при выполнении. На этот раз оценки выше 90, поэтому ожидается, что на выходе будет A+. Давайте запустим этот код, чтобы увидеть, каков результат этого кода.

AndreyEx = 95



Result = 'Grade = A+' if AndreyEx > 90 else 'Grade = A' if AndreyEx > 80 else 'Grade = B' if AndreyEx >70 else 'Grade = C' if AndreyEx >60 else 'Grade = D' if  AndreyEx > 40 else 'Fail'



print(Result)




Оценка A+ выводится на экран консоли.

 

Заключение

Мы подробно рассмотрели встроенные if-else в python с несколькими допустимыми примерами с помощью терминала Spyder. Встроенный if-else имеет гораздо более короткий и аккуратный код, который понятен и прост в использовании. Надеюсь, это поможет вам понять фундаментальную концепцию встроенных операторов if-else.



2022-03-07T20:29:58
Python

Как выбрать маршрутизатор в 2023 году — полное руководство по покупке!

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

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


1. Подумайте, сколько вы готовы потратить на роутер

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

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

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


2. Какой роутер вам нужен

Покупка нового роутера — один из самых простых способов улучшить скорость Wi-Fi. Прежде чем вы начнете покупать маршрутизатор, выясните примерную площадь вашего дома.

Один маршрутизатор

Большинство людей выбирают один маршрутизатор или комбинацию маршрутизатор/модем. Помните, что это устройство должно быть подключено к существующей розетке или модему через кабель Ethernet, что ограничивает его размещение. Сигнал Wi-Fi наиболее силен рядом с маршрутизатором и постепенно ослабевает и замедляется.

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

Сетчатые системы

Mesh Wi-Fi может быть ответом, если у вас большой дом, сад, толстые стены или определенные мертвые зоны с вашей текущей настройкой. Ячеистые системы имеют центральный концентратор, который подключается к одному маршрутизатору и сателлитам или узлам, разбросанным по всему дому.

Добавляя узел, вы можете улучшить покрытие и надежность Wi-Fi в разных областях. Имейте в виду, что каждый узел потребует питания. Ячеистые системы часто (но не всегда) дороже, чем системы с одним маршрутизатором, но они обеспечивают лучшее покрытие, надежность и контроль. Они также меньше, чем обычные маршрутизаторы, и разработаны, чтобы гармонировать с вашим декором.


3. Проверьте, совместим ли ваш новый маршрутизатор с вашим интернет-провайдером.

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

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

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

  • Комкаст Xfinity
  • Кокс
  • Медиаком (PDF)
  • РКН
  • Спарклайт (ранее Cable One)
  • Спектр


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

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

Однако имейте в виду, что максимальные маршрутизаторы обеспечивают скорость на каждом из диапазонов 2,4 ГГц и 5 ГГц. Поскольку большинство устройств не используют каждую частоту Wi-Fi одновременно, эта общая скорость, вероятно, обманчива. Проверьте максимальную скорость, с которой может работать ваш маршрутизатор в диапазонах 2,4 ГГц и 5 ГГц.

Помните, что скорость беспроводных сетей снижается из-за того, что они должны проходить по воздуху или, что еще хуже, по твердым предметам, таким как стены, полы и мебель. Итак, если вам требуется максимальная скорость от маршрутизатора для игрового сеанса CS:GO, используйте для подключения к нему соединение Ethernet.


5. Ищите новый беспроводной протокол

Глядя на маршрутизаторы, вы заметите цифры 802. 11 плюс букву или сочетание букв. Беспроводной протокол, часто называемый стандартом Wi-Fi, показывает, насколько хороши пропускная способность и радиус действия маршрутизатора. Однако вам не нужно быть техническим специалистом, чтобы понять эти стандарты Wi-Fi. Просто найдите маршрутизатор, который поддерживает один из самых современных беспроводных протоколов, таких как:

  • 11ax (Wi-Fi 6): последний стандарт предназначен для обеспечения скорости до 10 Гбит/с, хотя многие гаджеты и интернет-соединения не способны на это. В результате вам может не понадобиться переходить на Wi-Fi 6 прямо сейчас.
  • 11ac (Wi-Fi 5): этот стандарт, вероятно, можно найти на большинстве маршрутизаторов, и он более чем способен поддерживать подключение со скоростью до 3,5 Гбит/с.
  • 11n (Wi-Fi 4): этот стандарт первым предложил скорость до 600 Мбит/с при работе в диапазонах 2,4 ГГц и 5 ГГц.


6. Используйте ячеистую сеть Wi-Fi или удлинители для распространения Wi-Fi по всему дому.

Это практически самоочевидно: вам понадобится маршрутизатор с диапазоном, который покрывает весь или большую часть вашего дома. Хотя некоторые маршрутизаторы более точны, чем другие, все они должны дать вам оценку того, сколько квадратных метров они могут покрыть.   Например, рекомендуются TP-Link Archer A20 и XFi Pods, но оба обеспечивают приблизительный диапазон, зависящий от количества спален в вашем доме.   Но не беспокойтесь. Если ваш маршрутизатор не передает сигнал Wi-Fi в самые дальние уголки вашего дома после его настройки, вы можете использовать удлинитель Wi-Fi или ячеистую систему Wi-Fi, чтобы расширить диапазон вашего сигнала Wi-Fi..


7. Ваш маршрутизатор должен иметь многоядерный процессор и не менее 128 МБ оперативной памяти.

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

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

Для вашего следующего маршрутизатора рекомендуется двухъядерный процессор, а не одноядерный. Хотя процессор с частотой 900 МГц менее мощный, чем аналог с частотой 1,2 ГГц, чем больше ядер у маршрутизатора, тем лучше он работает. Другими словами, применяются те же правила, что и при использовании компьютера, смартфона или других форм вычислений.

Оперативная память маршрутизатора должна быть не менее 128 МБ. Идеальным объемом оперативной памяти было бы не менее 256 МБ. Это делается для того, чтобы все как можно быстрее обрабатывалось самим устройством. Подумайте о приобретении беспроводного маршрутизатора с 1 ГБ ОЗУ, если деньги не являются проблемой.


 8. Выбранный вами маршрутизатор должен быть двухдиапазонным или более

Роутеры с одной полосой — это пережиток прошлого. По крайней мере, ваш новый маршрутизатор должен быть двухдиапазонным. Другими словами, что вы думаете об этом? Другими словами, это означает, что роутер транслирует беспроводной сигнал на двух и более частотах (если он трехдиапазонный и более). Маршрутизаторы Wi-Fi 4 (802.11n) или Wi-Fi 6 (802.11ax) используют полосу частот 2,4 ГГц, которая совместима как со старыми стандартами беспроводной связи, такими как Wi-Fi 4, так и с более новыми, такими как Wi-Fi 6.

Благодаря совместимости со старыми сетевыми устройствами и широкой зоне покрытия диапазон 2,4 ГГц является привлекательным вариантом. Перегрузка может быть проблемой в многоквартирных домах и офисных зданиях, где у каждого есть Wi-Fi, работающий в диапазоне 2,4 ГГц.

Частота 5 ГГц также используется двухдиапазонными и трехдиапазонными маршрутизаторами. Это намного быстрее, чем 2,4 ГГц, и он использует преимущества новейших стандартов Wi-Fi, таких как 802.11ac и Wi-Fi 6, для максимальной производительности (802.11ax). Меньше перегрузок, потому что диапазон 5 ГГц используется реже и имеет меньшую зону покрытия. Приобретите двухдиапазонный или трехдиапазонный беспроводной маршрутизатор, если вам нужен современный умный дом с быстрой беспроводной сетью для потоковой передачи контента в формате Full HD или 4K.

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


9. VPN, антивирус, брандмауэр и другие дополнительные функции.

Чтобы защитить вашу сеть Wi-Fi от вредоносных программ и внешних атак, многие маршрутизаторы оснащены полезными расширенными функциями, такими как VPN-серверы, антивирусное программное обеспечение и другие функции безопасности. Проблема в том, что маршрутизаторы с некачественным оборудованием не могут воспользоваться этими расширенными функциями.

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

Двухъядерный процессор и 256 МБ ОЗУ, как минимум, необходимы для расширенных функций в вашем роутере, а желательно даже больше.


10. Роутер должен иметь порт USB, желательно USB 3.0

Порт USB является абсолютной необходимостью в современном доме. Внешние жесткие диски, принтеры, USB-модемы и многие другие USB-устройства должны быть подключены к нашему беспроводному маршрутизатору. Рекомендуется, чтобы ваш новый маршрутизатор имел хотя бы один порт USB 3.0. К TP-Link Archer AX6000, который стоит дороже, современные мобильные устройства можно подключать через порт USB-Type C.


11. Интеграция с умным домом

Во многих домах есть умные устройства и датчики. Чтобы лучше управлять ими, купите маршрутизатор, который работает с умным помощником Alexa от Amazon или с сервисами автоматизации задач, такими как IFTT (If This, Then That). Новые способы подключения приложений и устройств. Если ваш маршрутизатор совместим, вы можете управлять им с помощью голосовых команд, таких как включение или отключение гостевого Wi-Fi, отключение светодиодов маршрутизатора ночью или определение приоритета игрового трафика.

Некоторые поставщики пошли еще дальше и интегрировали Alexa непосредственно в свои маршрутизаторы. Маршрутизатор ASUS Lyra Voice — захватывающий пример.


12. Ваш роутер должен иметь приложение для смартфона

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

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

Другая проблема заключается в том, что некоторые мобильные приложения беспроводного маршрутизатора работают только тогда, когда смартфон подключен к сети Wi-Fi маршрутизатора. Это означает, что вы можете использовать мобильное приложение только вдали от маршрутизатора. Если для вас важно удаленное управление из любого места в Интернете, убедитесь, что оно есть на нужном маршрутизаторе. Удаленное управление Интернетом обычно доступно для маршрутизаторов среднего и премиум-класса. Недорогие маршрутизаторы редко имеют эту функцию.


13. Вы должны определить, какую площадь вам нужно покрыть

Если у вас большой дом, предоставление Wi-Fi для всех ваших устройств может стать проблемой, особенно если вы используете диапазон 5 ГГц. Один маршрутизатор с хорошими антеннами подойдет для небольших квартир или домов, и никогда не будет лишним сначала все проверить, прежде чем тратить много денег. Узнать радиус действия роутера несложно, читая обзоры.

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


14. Сколько устройств будет подключено к вашему роутеру?

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

Если у вас есть десять устройств, подключенных к маршрутизатору 2,4 ГГц с теоретической максимальной скоростью 300 Мбит/с, каждое из этих устройств будет получать в среднем около 30 Мбит/с. Высококачественный двухдиапазонный маршрутизатор — ваш лучший выбор, если у вас есть много устройств, подключенных одновременно в многолюдном доме. Подумайте о трехдиапазонном маршрутизаторе с двумя диапазонами 5 ГГц для вашей семьи, которой просто не хватает Netflix.

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


15. Не забывайте о дополнительных функциях

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

Качество обслуживания (QoS)

Вы можете указать своему маршрутизатору на определенных устройствах и интернет-соединениях отдавать приоритет по сравнению с другими с помощью качества обслуживания. Если вы геймер, которому необходимо обеспечить надежность подключения к Интернету, даже если ваш партнер или дети включат Netflix, вы можете указать маршрутизатору отдавать приоритет интернет-подключению Xbox, а не Smart TV.

Многопользовательский, множественный вход, множественный выход (MU-MIMO)

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

Формирование луча

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


Часто задаваемые вопросы

Сколько прослужит роутер?

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

Какая марка роутера лучшая?

Маршрутизаторы от NETGEAR, TP-Link, ASUS и Linksys — одни из наших любимых. Google, D-Link и Synology также являются приемлемыми вариантами. Однако перед покупкой следует проверить, соответствует ли маршрутизатор вашим требованиям и имеет ли он положительные отзывы, независимо от марки, особенно если вы ищете маршрутизатор для своего бизнеса.


Заключение

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

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

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



2022-03-07T15:29:10
Вопросы читателей