Зачем использовать Postman?
Сегодня Postman — супер-популярный инструмент. Им пользуются более 8 миллионов разработчиков и тестировщиков. И вот почему:
- Бесплатный. Postman — бесплатный инструмент.
- Простой в использовании. Очень просто начать пользоваться — Postman интуитивно понятный. Уже через несколько минут после скачивания и установки вы сможете отправить ваш первый запрос.
- Поддерживает разные API. С помощью Postman можно выполнять разные типы запросов к любым API (REST, SOAP, GraphQL (по тестированию GraphQL c помощью Postman у нас есть отдельная статья)
- Расширяемый. Postman можно настроить под ваши конкретные нужды с помощью Postman API.
- Интегрируемый. Можно легко интегрировать наборы тестов в ваш любимый CI/CD инструмент с помощью Newman (CLI collection runner — позволяет запускать Postman-коллекции в командной строке)
- Имеет большое комьюнити. Postman очень популярный и, как следствие, имеет большое комьюнити, которое подскажет ответы на большинство вопросов.
Виталий решил открыть депозит, но в Петропавловске-Камчатском, где он живет, банки предлагают по вкладам не больше 4,5% годовых.
А его сестра Наталья, которая переехала в Калининград, рассказывает, что там можно положить деньги в банк и под 6%. Что может сделать Виталий, чтобы стать клиентом банка, у которого нет офиса в его городе?
Выберите один верный ответ
У Виталия есть возможность открыть вклад, а также купить ценные бумаги и оформить страховые полисы в компаниях из других регионов дистанционно — через финансовый маркетплейс
Виталию придется съездить один раз в другой город, заключить договор с нужной ему финансовой организацией и дальше он сможет дистанционно с ней работать — другого выхода нет
Инвестиции — Что нужно знать инвестору 5 вопросов
Циклы в Bash
Циклы используются для того, чтобы повторять один и тот же блок кода несколько раз. Основные циклы в Bash — while и for. Мы рассмотрим примеры для обеих конструкций.
Цикл while
Цикл while продолжает выполнения блока кода до тех пор, пока заданное условие не станет ложным.
Синтаксис конструкции while в Bash выглядит следующим образом:
Если условие истинно, выполняется блок do.
Давайте рассмотрим пример цикла while. Цикл будет выполняться до тех пор, пока значение переменной будет меньше 10. Внутри блока do мы будем увеличивать значение переменной на один.
Вывод:
Значение переменной равно
Цикл повторяется до тех пор, пока условие не станет ложным.
Цикл for
В общем виде синтаксис цикла for выглядит так:
Здесь i — это переменная.
Давайте рассмотрим пример использования цикла for. Мы будем увеличивать значение переменной и выводить его каждый круг цикла:
Вывод:
Переменные среды
Иногда в командах оболочки нужно работать с некими системными данными. Вот, например, как вывести домашнюю директорию текущего пользователя:
Обратите внимание на то, что мы можем использовать системную переменную в двойных кавычках, это не помешает системе её распознать. Вот что получится, если выполнить вышеприведённый сценарий
Использование переменной среды в сценарии
А что если надо вывести на экран значок доллара? Попробуем так:
Система обнаружит знак доллара в строке, ограниченной кавычками, и решит, что мы сослались на переменную. Скрипт попытается вывести на экран значение неопределённой переменной . Это не то, что нам нужно. Что делать?
В подобной ситуации поможет использование управляющего символа, обратной косой черты, перед знаком доллара:
Теперь сценарий выведет именно то, что ожидается.
Использование управляющей последовательности для вывода знака доллара
Используйте Objects.requireNonNull()
Аннотации имеют значение только во время компиляции и не влияют на поведение программы при выполнении. Если вам нужно, чтобы при выполнении метод не вызывался с -аргументом, то следует использовать метод (T obj, строка сообщения). Объекты — это статический служебный класс для выполнения основных операций вроде , и , защищенным от null способом.
Чтобы оградить метод от нулевых аргументов, передайте в метод соответствующие параметры вместе с описательным текстом ошибки. Если параметр окажется , это вызовет NPE с указанным вами сообщением об ошибке. В противном случае данный метод просто вернет параметр. Обычно его используют в конструкторах, как показано ниже:
Здесь у вас может возникнуть вопрос, заключается ли причина избегания нулевого параметра в том, что он может ненамеренно привести к NPE. Не будет ли лучше выбросить NPE намеренно до того, как это произойдет?
Скорее всего, это одно и то же, и с позиции пользователя выглядеть это будет тоже одинаково — в виде появления ошибки. А вот при диагностировании причины сбоя в дальнейшем, последний вариант окажется гораздо предпочтительнее. Проблема с NPE в том, что они не сообщают, какая переменная оказалась null, а просто предоставляют номер строки. В строке, где для объектов вызывается несколько методов, может быть сложно определить, в каком из них причина.
Предположим, вы получаете NPE в следующей строке кода:
Какая из переменных была ? И , и , и могли оказаться нулевыми. Если qux не была , то объект, который она возвращает, мог. Потребуется потратить какое-то время на выяснение, какой из этих сценариев оказался виновником.
Выбрасывание собственного исключения для пустого значения параметра будет тут же показывать в лог-файлах, где искать проблему, потому что на нее будет указывать ваше собственное сообщение об ошибке.
Двойные скобки
Результат выполнения команды можно легко сохранить в переменную.
На основе этого механизма можно выполнять арифметические действия. Достаточно вместо одной пары скобок использовать две.
Рассмотрим примеры в скрипте
expansion_example.sh
Разберём этот скрипт:
Строка 4 — Базовый синтаксис. Можно ставить пробелы без использования кавычек.
Строка 7 — Работает и без пробелов.
Строка 10 — Можно использовать переменные без $ перед ними.
Строка 13 — А можно и с $
Строка 16 — Увеличение переменной на 1. Символ $ не нужен.
Строка 19 — Увеличение переменной на 3. Это краткая форма записи b = b + 3.
Строка 19 — В отличие от других способов символ * не нужно экранировать.
./expansion_example.sh
981112131620
Двойные скобки дают довольно много свободы в форматировании кода.
Они доступны в Bash по умолчанию и их эффективность немного выше. Хотя заметить разницу на современных компьютерах будет непросто.
Хорошее Значение
Одним из критериев, используемых для определения того, как ядро обрабатывает процесс, является приятное значение. Каждый процесс имеет приятную ценность. Хорошее значение – это целое число в диапазоне от -19 до 20. Все стандартные процессы запускаются с хорошим значением, равным нулю.
Хитрость в том, что чем выше значение nice, тем приятнее ваш процесс по отношению к другим процессам. Другими словами, высокое значение nice говорит ядру, что этот процесс с удовольствием ждет. Отрицательное число противоположно тому, чтобы быть хорошим. Чем больше отрицательное значение nice, тем более эгоистичный процесс. Он пытается получить как можно больше процессорного времени, не обращая внимания на другие процессы.
Мы можем использовать команду для установки значения nice при запуске процесса, и мы можем использовать для регулировки Хорошая ценность запущенного процесса.
Правила, которых принято придерживаться
У разработчиков принято использовать при комментировании несколько простых правил. Так легче работать — больше пользы и не нужно плодить лишние строки кода.
1. Комментарии помещаются прямо над кодом, к которому они относятся. Так проще понять, о чём речь, не вникая в содержание каждой строчки. Совсем короткие пояснения можно писать справа.
2. Комментируют все основные элементы кода: модули, функции, константы, глобальные переменные, интерфейсы, классы и их составные элементы (методы, свойства, константы).
3. Пишут коротко и по делу. Комментарии без смысловой нагрузки страшно раздражают. Не нужно писать комментарии типа «это гениальный код», «таблица1», «! №; %:? *» и подобные.
IIFE и приватные переменные
В чем действительно хороши IIFE, так это в возможности создания области видимости.
Давайте посмотрим на пример.
В этом примере мы объявили две переменные внутри IIFE и тут они приватные, то есть только для самой IIFE. Никто за пределами IIFE не имеет к ней доступа. Так же, у нас есть функция , к которой ни у кого нет доступа за пределами IIFE. Но функция имеет доступ к приватным переменным.
Когда мы доберемся до модульного паттерна, тогда я объясню то, как раздать привилегии и контролировать доступ к таким приватным переменным, даже за пределами IIFE. В общем, читаем дальше, пусть даже если вы уже чувствуете себя IIFE ниндзей!
Шаг 3. Работайте над достижением своих целей
Манифестация — это искусство вашего со Вселенной совместного творения. Совершение решительных действий для получения желаемого – ваша часть работы. Это интересный и приятный процесс, если вы верите в свои силы.
Запишите 3 действия, которые вы можете предпринять сегодня, чтобы приблизиться к исполнению желания. Если ничего не приходит в голову, проведите поиск в интернете. Наверняка кто-то уже проходил подобный путь ранее. Позвольте себе вдохновиться опытом других людей.
Начните действовать постепенно и регулярно. Продолжайте, пока не достигнете своей цели. Соедините реальные поступки с манифестацией, и вас удивит, что из этого получится.
4. Метод 2 стаканов
Getty Images
Это необычный, но очень эффективный метод реализации желаний, для которого нужны 2 стакана (или чашки) и вода.
-
Заполните один стакан водой и запишите на стикере вашу нынешнюю ситуацию (например, одинокий, безработный)
-
Второй пустой стакан также обозначьте, написав желание, цель или мечту, которую вы хотите реализовать (например, любящие отношения, успешная карьера).
-
Подумайте над вашим сегодняшним состоянием и тем, как вы будете чувствовать себя, как только достигнете желаемого результата.
-
Наполните стакан с вашим желанием водой из стакана с нынешней ситуацией, удерживая положительные эмоции.
-
Выпейте воду из стакана с желанием и снимите наклейку со стакана с нынешней ситуацией.
В середине 90-х годов д-р Масару Эмото изучал молекулярную структуру воды и обнаружил, что вода может удерживать разные типы энергии. Когда мы выпиваем воду, мы впитываем энергию, которую заложили в стакан.
Этот метод помогает притянуть ситуации, которые приведут вас к реализации желаемой ситуации.
Возвращайте Optional вместо null
Хоть в предыдущей статье я и убеждал вас в уместности для некоторых сценариев, в этой я буду напротив говорить, что по возможности его все же лучше избегать. При каждом добавлении в базу кода нового метода, способного вернуть пустое значение, вам следует стараться использовать вместо null тип Optional. Этот тип был введен, чтобы разработчики могли указывать на возможность возвращения методом пустого значения, что ранее было недоступно (либо требовало аннотаций, о которых я расскажу ниже). Существует два вида объектов : содержащие значение и без него. Первые изначально создаются со значением, вторые же просто являются статическими одиночками. Структурно типичный случай их использования выглядит так:
Чтобы увидеть, почему сигнатура с предпочтительней, представьте следующий метод:
Из этой сигнатуры понятно лишь, что она возвращает объект типа . При этом, как уже говорилось, соответствует любому типу. У нас нет иной возможности узнать, возвращает ли данный метод , кроме как проанализировать его реализацию. В противоположность приведенному примеру, метод, возвращающий , будет выглядеть так:
Поскольку смысл использовать есть только в случае возможного возврата пустого значения, значит метод такое значение вернуть может. Поэтому при каждом возвращении методом вы знаете, что есть вероятность получения пустого значения и его нужно должным образом обработать.
Возвращаемое значение обрабатывается аналогично : вы проверяете, передано ли значение, и, если да — выполняете с ним определенные действия. Вызов метода, возвращающего , как правило, выглядит так:
Со значением соответствующий код будет выглядеть так:
В то время как можно легко забыть выполнить проверку на в первом примере, тип безопаснее и делает очевидным возможное отсутствие возвращаемого значения. Если вы вызовите для пустого значения , то получите исключение, как и в случае вызова любого метода для значения . В самых простых случаях перед вызовом всегда нужно вызывать , однако API предлагает и другие альтернативы, где при отсутствии значения может возвращаться его предустановленный вариант.
Обратите внимание, что тип резонно использовать только для возвращаемых значений. Например, в примере ниже присваивание в цикле ничем не лучше
На деле использование для начального присваивания будет даже более изящным, и у вашей IDE не должно возникнуть сложностей в обнаружении упущенной проверки на , когда переменная используется в том же методе, где была объявлена.
Однако если бы вместо этого у нас был метод, возвращающий активную госпитализацию, то предпочтительнее было бы использовать :
Можно ли использовать для параметров?
SonarLint отвечает “Нет”, поскольку лучше предоставить действительное значение, чем , которое может его иметь или нет. Ведь иначе нам придется проверять в методе оба случая, а также убеждаться, что никто не передал вместо него null. Смешивать же и вообще не стоит, иначе смысл в использовании последнего полностью исчезнет.
Никогда не делайте следующее, равно как не предоставляйте в качестве аргумента параметра с значением:
Если вы сделаете нечто подобное, то также получите NPE (исключение нулевого указателя).
Если у вас есть некое значение, которое, вероятно, содержит , и вы хотите преобразовать его в , то вам нужно вызвать вместо этого , который вернет обернутое в значение, если аргумент не является . В противном случае он вернет пустой . Если же вам нужно выполнить обратную операцию, т.е. преобразовать, вероятно, пустое значение в или значение, которое оно содержит, используйте , который при отсутствии значения возвращает предоставленный аргумент.
Альтернатива: сокращение вилок с помощью фоновых долгосрочных задач
Чтобы предотвратить множественные вилки, такие как
Или
Это работает нормально, но запуск многих вилок тяжелый и медленный.
А такие команды, как и могут выполнять множество операций, строка за строкой !!
Видеть:
Таким образом, мы могли бы использовать длительный фоновый процесс для выполнения множества заданий без необходимости инициировать новую fork для каждого запроса.
В разделе bash есть встроенная функция: :
Поскольку готов, работает в фоновом режиме и ввод / вывод тоже готов, нет никаких задержек, нечего загружать, открывать, закрывать до или после операции. Только сама операция! Это стало намного быстрее, чем необходимость форкнуть для каждой операции!
Эффект границы: пока продолжают работать, они будут содержать все регистры, поэтому некоторые переменные или функции могут быть определены на этапе инициализации как первая запись в сразу после запуска задача (через ).
Команды в bash
Команда в bash — это наименьшая единица кода, которую bash может выполнить. С помощью команд мы сообщаем шеллу, что нам нужно, чтобы он сделал. bash обычно принимает от пользователя одну команду и возвращается к нему после того, как команда будет выполнена. Чтобы немного освоиться в bash, давайте попробуем выполнить несколько простых команд.
Команда echo — возвращает всё, что вы вводите в командной строке:
Пример использования команды echo
Команда date — отображает текущее время и дату:
Пример использования команды date
Команда pwd (сокр. от print working directory») — указывает на текущий рабочий каталог, в котором команды шелла будут искать файлы.
Файловая иерархия в Linux имеет древовидную структуру, поэтому, чтобы добраться до указанного каталога или файла, нам нужно пройти определенный путь, каждый узел которого отделен от других узлов символом .
Пример использования команды pwd
Команда ls (сокр. от list») — отображает содержимое каталога. Обычно, команда начинает с просмотра нашего домашнего каталога. Это означает, что если мы просто напечатаем , то данная команда выведет содержимое текущего каталога, которым в нашем примере является домашний каталог /home/diego:
Пример использования команды ls
Команда cd (сокр. от change directory») — изменяет текущую директорию на заданную пользователем. Рассмотрим некоторые примеры использования данной команды:
— меняет текущую директорию на заданную. Давайте попробуем с помощью команды перейти к корневому каталогу и ознакомимся с его содержимым
Обратите внимание, что мы также можем использовать точку с запятой для записи двух команд в одной строке
Пример объединения двух команд в одной строке
— вернуться в родительский каталог.
— вернуться в домашний каталог.
Команда mkdir (сокр. от make directory») — создает новый каталог.
Команда mv (сокр. от move») — перемещает один или несколько файлов/каталогов из одного места в другое (заданное пользователем). Для этого нужно указать, что мы хотим переместить (т.е. источник), и куда мы хотим переместить (т.е. пункт назначения).
В качестве примера я создам новый каталог Ravesli в своей домашней директории и перемещу в него все .txt-файлы (ну как «все», у меня там только один файл — Адреса.txt) из home/diego/Документы/ с помощью двух вышеприведенных команд:
Перемещение файлов с помощью команды mv
Команда touch — создает новые пустые файлы (а также изменяет временные метки в существующих файлах и каталогах). Вот как мы можем создать пустой файл под названием foo.txt в папке Ravesli из домашнего каталога:
Создание файла с помощью команды touch
Команда rm (сокр. от remove») — удаляет файлы/каталоги. По умолчанию, команда НЕ удаляет каталоги, но если используется как внутри заданного каталога, то каждый подкаталог и файл внутри заданного каталога — удаляются.
Давайте удалим ранее созданный файл foo.txt:
Удаление файла с помощью команды rm
Команда rmdir (сокр. от remove directory») — удаляет каталоги.
Давайте удалим созданный ранее каталог home/diego/Ravesli:
Удаление каталогов с помощью команды rmdir
Команда cat (сокр. от «concatenate») — считывает файл и выводит его содержимое. Она может работать с несколькими файлами, объединяя их вывод в единый поток (отсюда и происходит её название). У меня в домашнем каталоге есть папка untitled с файлами С++/Qt-проекта, и ниже я использую команду для просмотра содержимого файла main.cpp из untitled:
Пример использования команды cat
Чтобы просмотреть несколько файлов, укажите друг за другом (через пробел) имена требуемых файлов после команды , например:
Просмотр нескольких файлов с помощью команды cat
Команда man (сокр. от «manual») — отображает справочные страницы, которые являются руководством пользователя, встроенным по умолчанию во многие дистрибутивы Linux и большинство систем Unix. Например, команда отобразит руководство пользователя, а команда отобразит справку по команде .
Отображение справочной информации с помощью команды man
Обзор рыночной капитализации
Всегда проверяйте рыночную капитализацию, так как это хороший показатель здоровья токена. Рыночная капитализация сама по себе говорит вам, сколько денег инвестируется в токен или монету. Токены или монеты с большой капитализацией обычно хорошо отслеживаются и считаются более безопасными инвестициями. Они по-прежнему подвержены большой волатильности, но часто поддерживают стабильную цену.
Малые рыночные капитализации могут быть уязвимы для насосов и сбросов, а большие капитализации могут быть сложнее получить эти лунные прибыли. Помните о массовой волатильности с монетами с меньшей капитализацией и ликвидационной потенциалом. И если вы сделали шаг глубже и начали заниматься сельским хозяйством и взаимодействовать с пулами ликвидности, знайте о ликвидации от непостоянным убыткам.
Важно соотнести всю вышеуказанную информацию с тем, сколько держателей токенов для монеты. Монета с малой капитализацией, у которую есть только несколько держателей, будет уязвима для еще большей волатильности; процент веса отдельного держателя также имеет решающее значение
expr
expr похож на let за исключением того, что вместо сохранения результата в переменную expr по умолчанию печатает ответ.
Но никто не запрещает сохранять результат expr в переменные с помощью command substitution: x = $(expr 2 + 2)
В отличие от let не нужно заключать выражения с пробелами в кавычки
Нужно ставить пробелы вокруг операторов.
Рассмотрим простой пример:
expr_example.sh
Разберём этот пример пошагово:
Строка 4 — Это базовый синтаксис
Обратите внимание на пробелы и на отсутствие кавычек.
Строка 6 — Если заключить выражение в кавычки его в таком виде и выведет в терминал.
Строка 8 — Если не поставить пробелы выражение будет выведено в терминал без вычисления.
Строка 10 — Некоторые символы нужно экранировать.
Строка 12 — Это деление по модулю. Результатом будет остаток от целочисленного деления двух чисел.
Строка 14 — Пример выполнения command substitution чтобы сохранить результат в переменную a
./expr_example.sh 12
9
5 + 4
5+4
60
1
7
10. Метод 369
Getty Images
Эта редкий метод был заимствован у известного ученого Никола Тесла.
По мнению Тесла числа 3,6 и 9 являются энергетически мощными числами. По его теории, круг имеет 360 градусов (3+6=9) и сколько бы раз вы не делили круг, вы всегда получите число 3, 6 или 9.
Используя эти числа, вы задействуете силу, которая позволяет вам воплотить все, что вы хотите, в реальность.
Вот, как работает этот метод.
-
Выберите аффирмацию, которая связана с вашими желаниями.
-
Напишите эту аффирмацию 3 раза утром.
-
Через несколько часов напишите ее еще 6 раз.
-
Перед сном напишите ее 9 раз.
-
Совершая такой ритуал, вы завершаете полный цикл 3,6 и 9.
-
Вы можете повторять этот процесс много раз, но желательно в течение 33 дней.
Как использовать параметры командной строки в скриптах
Многие команды, такие как ls и wc, принимают параметры командной строки. Они предоставляют команде информацию, поэтому она знает, что вы хотите от нее делать. Если вы хотите, чтобы ls работал с вашим домашним каталогом и также показать скрытые файлы, вы можете использовать следующую команду, где тильда ~ и опция -a (all) являются параметрами командной строки:
ls ~ -a
Наши скрипты могут принимать параметры командной строки. Они обозначаются как $ 1 для первого параметра, $ 2 для второго и так далее, вплоть до 9 долларов для девятого параметра. (На самом деле, есть еще $ 0, но он зарезервирован, чтобы всегда хранить скрипт.)
Вы можете ссылаться на параметры командной строки в сценарии так же, как на обычные переменные. Давайте изменим наш скрипт, как показано ниже, и сохраним его под новым именем fcnt2.sh:
#!/bin/bash folder_to_count=$1 file_count=$(ls $folder_to_count | wc -l) echo $file_count files in $folder_to_count
На этот раз переменной folder_to_count присваивается значение первого параметра командной строки, $ 1.
Остальная часть скрипта работает точно так же, как и раньше. Теперь ваш сценарий не является конкретным решением, а общим. Вы можете использовать его в любом каталоге, потому что он жестко не запрограммирован для работы только с «/ dev».
Вот как сделать исполняемый файл скрипта:
chmod +x fcnt2.sh
Теперь попробуйте это с несколькими каталогами. Вы можете сначала выполнить «/ dev», чтобы получить тот же результат, что и раньше. Введите следующее:
./fnct2.sh /dev
./fnct2.sh /etc
./fnct2.sh /bin
Вы получите тот же результат (207 файлов), что и раньше, для каталога «/ dev». Это обнадеживает, и вы получаете зависящие от каталога результаты для каждого из других параметров командной строки.
Чтобы сократить сценарий, вы можете полностью отказаться от переменной folder_to_count и просто ссылаться на $ 1, как показано ниже:
#!/bin/bash file_count=$(ls $1 wc -l) echo $file_count files in $1
7. Аффирмации
Getty Images
Позитивные аффирмации — еще одна техника реализации желаний. Они представляют собой положительные утверждения или послания себе, которые вы произносите, чтобы подтвердить свою цель или желание.
Когда вы постоянно утверждаете то, что вы хотите, вы заново программируете свое подсознание.
Их можно произносить вслух или про себя, в настоящем времени, как будто у вас уже все есть.
Например:
-
Вселенная дает мне все в нужное время.
-
Я заслуживаю всех положительных вещей, которые приходят ко мне. -
Вселенная поддерживает меня.
Аффирмации должны сопровождаться позитивными эмоциями, такими как радость, благодарность и верой в них.
Что в итоге
Комментарии — отличная штука. Они помогают команде разработчиков работать над общим проектом. А если программист один, позволят ему даже через много лет вспомнить ход своих мыслей. Но комментариев должно быть мало, иначе они превратятся во флуд.
Комментировать нужно основные элементы кода, неочевидные решения, сложные бизнес-процессы, тонкости решений и тому подобное. Не пишите комментарии, объясняющие, что и как делает процедура или функция, — это бессмысленно.
И помните, что комментарий — не панацея, он не спасёт плохой код, даже если сделает его понятнее. Сложные и запутанные фрагменты сокращайте и делайте рефакторинг, а комментируйте по минимуму.