По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Нет, в этой статье мы не будем рассматривать основные команды, такие как ls, rm и cd. Вы не должны быть шокированы, увидев эти команды. Возможно, вы даже хорошо знакомы с ними. Особенно, если вы хорошо разбираетесь в командной строке. Эта статья для тех из вас, кто имеет некоторый опыт работы с командной строкой и знаком с основными командами (а если не знакомы – то познакомиться можно в нашей статье). Wget В Unix-подобных операционных системах команда wget загружает файлы, обслуживаемые по HTTP, HTTPS или FTP, по сети. По умолчанию он включен во все уважающие себя дистрибутивы Linux. Самый простой способ использовать wget - указать местоположение файла для загрузки по HTTP. Скачать файл http://website.com/static/images/header.jpg с помощью wget можно с помощью следующей команды: wget http://website.com/static/images/header.jpg Отличительной особенностью wget является то, что он неинтерактивный, что означает, что он может работать в фоновом режиме, пока пользователь не вошел в систему. Это позволяет вам начать поиск и отключиться от системы, позволяя wget завершить работу. Scp У вас когда-нибудь возникала проблема, когда вам нужно было получить файл с удаленного сервера на ваш локальный компьютер? Например, получение файла, загруженного пользователем, который вызвал некоторые проблемы. Вы можете скачать этот файл через командную строку, используя команду scp. Scp - сокращение от secure copy, т.е. защищенная копия. Что еще более важно, это то, что это удаленная защищенная копия. Эта команда похожа на команду cp, которую вы, вероятно, уже знаете, но источник или цель находятся в другой системе. Следующая команда копирует файл foobar.txt с удаленного сервера в локальный каталог. scp username@remotehost.com: /path/to/foobar.txt /some/local/directory Но scp также можно использовать для копирования файла из локального каталога на удаленный сервер. scp /some/local/directory/foobar.txt username@remotehost.com: /destination/path/ То же самое можно сделать с каталогами, используя опцию -r, которая рекурсивно копирует целые каталоги. ssh-keygen Команда ssh-keygen используется для генерации новой пары ключей SSH. Открытый ключ SSH, сгенерированный этой командой, может использоваться в Gitlab или Bitbucket для установления безопасного соединения. После того, как вы добавили свой SSH-ключ в Gitlab или Bitbucket, у вас не будет запрашиваться пароль каждый раз, когда вы пытаетесь отправить файлы в удаленную ветку. Чтобы сгенерировать пару ключей SSH, используйте следующую команду: ssh-keygen -t ed25519 Обратите внимание, что в приведенном выше примере мы использовали алгоритм подписи ED25519. Хотя ED25519 считается наилучшей практикой, вы всегда должны провести некоторое исследование в области различных доступных алгоритмов подписи. Генерация пары ключей SSH и ее правильная настройка в Gitlab или Bitbucket обойдутся вам максимум в десять минут, но они того стоят! CHMOD В Unix и Unix-подобных операционных системах chmod - это командный и системный вызов, который используется для изменения прав доступа к объектам файловой системы (файлам и каталогам). Мы все были в ситуации, когда у сервера не было доступа к определенному файлу из-за неправильной настройки прав доступа к файлу. Команда chmod сама по себе довольно проста, но предоставление необходимых прав доступа к файлам и каталогам - совершенно другое дело. Подробно о том как пользоваться это командой можно прочитать в нашей статье chmod 664 robots.txt chmod 775 public/images Первый пример дает права на чтение и запись пользователю и группе для файла robots.txt. Разрешение на чтение предоставляется другим для этого файла. Второй пример дает права на чтение, запись и выполнение пользователю и группе для папки public/images. Другим предоставляется разрешение на чтение и выполнение для этой папки. Tar Эта команда используется для сбора множества файлов в один архивный файл. Tar является наиболее широко используемой командой для создания сжатых архивных файлов. Давайте начнем с того, как вы можете создать архивный файл для определенного каталога: tar -cvf my-archive.tar /path/to/directory Эта команда приведет к созданию файла архива my-archive.tar, который содержит все файлы каталога /path/to/directory, созданного в текущем рабочем каталоге. Создание файла архива является первой частью. Вторая часть состоит в том, чтобы распаковать архивный файл, потому что в какой-то момент мы хотим использовать файлы в tar-файле. Вы можете распаковать файл в определенный каталог, введя следующую команду: tar -xvf my-archive.tar -C /home/myfolder/ Alias Каждый использует какие-то команды, которые слишком длинны или сложны, чтобы их можно было полностью запомнить. К счастью, вы можете создать псевдоним для этой команды, чтобы вам не пришлось запоминать всю команду. alias short-command = "Ваша обычная и очень длинная команда здесь" Хотя создание псевдонима приводит к одной проблеме: этот псевдоним является временным. Если вы создадите псевдоним таким образом, он будет доступен только для текущего сеанса терминала. Чтобы сохранить псевдонимы между сеансами, вы можете сохранить их в файле профиля конфигурации оболочки вашего пользователя. Этот файл профиля, вероятно, находится в ~/.bashrc или ~/.zshrc, если вы используете Bash или ZSH соответственно. Совет 1: Направление вывода Стандартным устройством вывода является экран. Но иногда вы не хотите выводить все на экран. В некоторых случаях вы, вероятно, предпочитаете выводить результаты некоторых команд в файл. Для целей регистрации, например. Чтобы перенаправить вывод, вы можете использовать">". В следующей команде вывод ls -al перенаправляется в файл myfile, а не на экран. ls -al> myfile Совет 2: Объединение команд Можно запустить две или более команд одновременно. Оператор точки с запятой " ; " позволяет вам сделать это. Вы можете выполнить несколько команд подряд, независимо от того, будет ли успешной каждая предыдущая команда. ls -al; pwd; Если вы хотите, чтобы вторая команда выполнялась только в том случае, если первая команда выполнена успешно, разделите команды с помощью логического оператора И, которым является &&. mkdir images && cd images Мы хотим перейти в папку с изображениями, только если нам удалось создать эту папку. И иногда вы можете захотеть выполнить вторую команду, только если первая команда не удалась. Для этого мы используем логический оператор ИЛИ, который пишется как ||.
img
Процесс анализа программного кода должен быть максимально автоматизирован. Когда вы создаете запрос на включение изменений, как минимум, вам нужно запустить модульные тесты и статический анализ программного кода в функциональной ветке. Средства автоматизации могут многое рассказать о качестве кода: метрики, покрытие кода модульными тестами, обнаружение дублированных строк и т.д. Однако есть как минимум 50 вещей, которые нельзя проверить автоматически. Они нуждаются во внимательном взгляде опытного проверяющего (это дает нам хоть какую-то надежду на то, что роботы не заменят разработчиков в ближайшем будущем). Требования Программный код реализует все функциональные требования, которые необходимы заказчику? Программный код удовлетворяет всем нефункциональным требованиям, таким как производительность и безопасность? Если нефункциональные требования не были упомянуты заказчиком, то этот вопрос необходимо уточнить у проектировщика или у самого заказчика.  Условия сопровождения Помещены ли все интерфейсы, классы и т.д. на соответствующий прикладной уровень в соответствии с архитектурой  Onion/Clean ? Не изобретаете ли вы колесо, когда пишете программный код? Можно ли его заменить чем-то, что уже существует и что предоставляет какая-либо сторонняя библиотека?  Есть ли уже реализованная логика или какие-то ее фрагменты в кодовой базе? Правильно ли была выбрана область жизненного цикла для интерфейса и реализации в контейнере внедрения зависимостей? Являются ли реализованные функции детерминированными (то есть всегда ли они выдают один и тот же результат для одних и тех же входных данных)? Все ли зависимости явно внедряются через конструктор типов? Есть ли сильная связанность между классами, которая может затруднить повторное использование кода? Используются ли  объекты-значения вместо элементарных типов данных для того, чтобы избежать проблемы одержимости элементарными типами? Соответствуют ли реализованные компоненты, такие как функции, классы, интерфейсы и модули,  принципу единственной обязанностей ? Расширяются ли существующие функциональные возможности при помощи декораторов, технологий аспектно-ориентированного программирования (принципа открытия-закрытия) или они модифицируются на месте? Правильно ли реализованы механизмы синхронизации потоков при доступе к объектам-одиночкам в веб-приложениях? Используются ли по возможности  неизменяемые типы данных вместо изменяемых для того, чтобы избежать побочных эффектов? Добавлена ли функция ведения журнала с верными  уровнями ведения протокола в основные места кода, которые требуют отслеживания? Производительность Правильно ли были выбраны  структуры данных ? Например, используется ли структура Hashtable вместо массива, когда нужно часто искать значения, для того, чтобы избежать линейного поиска? Распараллелены ли длительные операции между всеми доступными ядрами для того, чтобы использовать ресурсы компьютера максимально эффективного? Выполняет ли программный код большое количестве  операций по выделению памяти для объектов в куче, оказывая тем самым дополнительную нагрузку на программу сборки мусора? Кэшируются ли данные, которые были считаны из базы данных, локально или в удаленном кэше? Сколько раз текущий код обращается к базе данных? Возможно стоит получить все данные за одно или несколько обращений? Выполняет ли код все обращения к базе данных, ввод-вывод и другие блокирующие вызовы асинхронно? Использует ли код  пул потоков по максимуму вместо того, чтобы создавать новые потоки? Правильно ли выбран баланс между  нормализацией и  денормализацией при создании дополнительных таблиц базы данных? Правильно ли добавляются или исправляются индексы, если запрос на включение изменений содержит новые SQL-запросы? Возникает ли  проблема с N+1 запросами при извлечении данных из базы данных при помощи фреймворка ORM? Установлен ли правильный уровень изоляции транзакций в хранимых процедурах? Возвращают ли SQL-запросы избыточные данные из базы данных, которые не требуются для кода приложения? Используется ли что-то вроде  SELECT * или что-то подобное? Модульное и интеграционное тестирование Полностью ли модульные тесты покрывают дополнительную логику? При появлении исправлений в логике, появляются ли изменения в соответствующем модульном тесте? Всегда ли все реализованные модульные или другие виды тестов ведут себя детерминировано? Например, приостанавливают ли они выполнение потока на какой-то определенный период времени перед утверждением (что по своей сути является ошибочным шаблоном)?  Все ли модульные тесты реализованы в соответствии с принципами  F.I.R.S.T. ? Есть ли какие-либо признаки проблем в модульном тестировании, такие как проблемы с  логикой проверки условий ,  рулеткой с утверждениями ,  дублированием утверждений и другие? Добавлен ли интеграционный тест, как минимум, для happy-path-сценария (сценария счастливого пути) реализованной функции? Все ли зависимости тестируемого объекта имитируются для того, чтобы модульный тест случайно не превратился в интеграционный и не выполнился быстрее положенного? Изолированы ли модульные и интеграционные тесты друг от друга? Конечные точки API Выбираются ли HTTP-команды, такие как  GET, POST, PUT, DELETE и другие, в соответствии с действием их конечной точки? Отвечает ли каждая конечная точка API за выполнение лишь одной бизнес-операции? Или все же нескольких? Возвращает ли конечная точка API правильный код состояния? Например, не возвращает ли она код 401 вместо 500 при несанкционированном запросе? Сжимаются ли объемные ответы перед их отправкой вызывающей стороне? Защищены ли конечные точки API политиками аутентификации и авторизации? Позволяет ли API, который возвращает большой список объектов, фильтровать его и разбивать на страницы? Является ли конечная точка API GET идемпотентной? Используются ли имена существительные вместо глаголов в именах конечных точек API? Критические изменения Имеются ли в конечной точке API такие критические изменения, как переименование API, удаление или переименование его параметров? Имеются ли критические изменения в полезных данных сообщения (в случае, если используется брокер сообщений), например, удаление или переименование его свойств? Повлияют ли такие изменения в схеме базы данных, как удаление столбцов или таблиц, на другие службы системы? Системная среда Насколько загружен ЦП и сколько оперативной памяти потребляет код при выполнении запроса на включение изменений? Будет ли в средах, в которых будет развернут код (среда тестирования, среда приёмочного пользовательского тестирования, производственная среда), достаточно мощный процессор и достаточный объем оперативной памяти для эффективного выполнения кода? Будет ли реализованная логика, алгоритмы, структуры данных и т.д. работать достаточно быстро на большом наборе данных, который может быть в производственной среде? Документация Была ли изменена документация для того, чтобы отразить новые изменения программного кода (документация API, документация по структуре, проектная документация)? Создается ли тикет  технических недоработок , если запрос на внесение изменений содержит неэффективный или «грязный» код, который сейчас невозможно перестроить из-за недостаточного количества времени? Заключение Количество пунктов, на которых проверяющий должен заострить свое внимание, зависит от конкретного проекта и даже от конкретного запроса на внесение изменений. Ваш с коллегами мозговой штурм (если вы примите во внимание вышеприведенные пункты) может значительно снизить риск того, что вы забудете о чем-то важно при анализе программного кода.   
img
При развертывании IP-АТС одним из важнейших факторов является выбор телефонных аппаратов, поэтому в сегодняшней статье мы расскажем про 5 самых известных и надёжных брендах и моделях SIP- телефонов, которые не раз устанавливали в своих инсталляциях. Немного теории SIP-телефон – это телефон, который устанавливается в локальную сеть через порт RJ-45, вместо стандартного RJ-11. В отличие от аналоговых телефонов, которые используют выделенную телефонную сеть, SIP-телефоны используют компьютерную сеть для передачи голосовых данных. Если вы хотите использовать IP-телефоны, то для управления, координирования и взаимодействия с различными компонентами телефонии, в сети должна присутствовать IP-АТС. Большинство телефонов указанных ниже поддерживают SIP, но перед тем как заказывать один из них, рекомендуем ещё раз ознакомиться с их спецификацией. Кроме того, не все ниже упомянутые телефоны поставляются с блоком питания. Если вы собираетесь использовать POE выключатели/POE адаптеры, блок питания может не потребоваться. Если блок питания не входит в стандартную поставку, обычно его можно докупить отдельно Телефоны Cisco 1. Cisco SPA 504G 4-Line IP Phone Количество линий Дисплей Интерфейсы Кнопки Фичи 4 линии, 4 SIP аккаунта, поддержка SIP и SCCP Монохромный 128 × 64 ЖК-дисплей с подсветкой Встроенный 2-портовый коммутатор, Поддержка POE 4 программируемые кнопки Встроенная громкая связь, порт для гарнитуры 2. Cisco SPA 303 3-Line IP Phone Количество линий Дисплей Интерфейсы Кнопки Фичи 3 линии, поддержка SIP и SCCP Монохромный 128 × 64 ЖК-дисплей с подсветкой Встроенный 2-портовый коммутатор Стандартный 12 - кнопочный диалпад, кнопки для голосовой почты и удержания Встроенная громкая связь, порт для гарнитуры 3. Cisco SPA525G2 5-Line IP Phone Количество линий Дисплей Интерфейсы Кнопки Фичи 5 линий, поддержка SIP и SCCP Графический 3,2-дюймовый цветной 320 х 240 дисплей Встроенный 2-портовый коммутатор c поддержкой POE, поддержка соединения по WiFi 5 программируемых линейных кнопок Интеграция с Bluetooth, Встроенная громкая связь, порт для гарнитуры, USB порт Телефоны Polycom 1. Soundpoint IP 335 Количество линий Дисплей Интерфейсы Кнопки Фичи 3 линии, поддержка SIP Монохромный 102 × 33 ЖК-дисплей с подсветкой Встроенный 2-портовый коммутатор, Поддержка POE 3 программируемые кнопки (контекстно-зависимые) Порт для гарнитуры 2. Soundpoint IP 550 Количество линий Дисплей Интерфейсы Кнопки Фичи 4 линии, поддержка SIP Монохромный 320 × 160 ЖК-дисплей с подсветкой Встроенный 2-портовый коммутатор, Поддержка POE 4 программируемые кнопки (контекстно-зависимые) Поддержка XHTML 3. Soundpoint IP 650 Количество линий Дисплей Интерфейсы Кнопки Фичи 6 линии, поддержка SIP Монохромный 320 × 160 ЖК-дисплей с подсветкой Поддержка POE, USB порт 4 программируемые кнопки (контекстно-зависимые) Возможность расширения до 12 линий с модулем расширения Polycom, Поддержка XHTML Grandstream 1. GXP1405 Количество линий Дисплей Интерфейсы Кнопки Фичи 2 линии, 2 SIP аккаунта Монохромный 128 × 40 ЖК-дисплей Встроенный 2-портовый коммутатор, Поддержка POE 3 XML - программируемые контекстно-зависимые программируемые клавиши Загружаемая телефонная книга XML, LDAP, XML настройка экрана 2. GXP 280 Количество линий Дисплей Интерфейсы Кнопки Фичи 1 линия, 1 SIP аккаунт Монохромный 128 × 32 ЖК-дисплей Встроенный 2-портовый коммутатор 3 программируемые XML клавиши Поддержка XHTML, Встроенная громкая связь, порт для гарнитуры 3. GXP 2124 Количество линий Дисплей Интерфейсы Кнопки Фичи 4 линии, поддержка 4 SIP аккаунтов Монохромный 240 × 120 графический 2-портовый гигабитный коммутатор с поддержкой POE 24 + 4 Контекстно программируемые клавиши быстрого набора BLF Встроенный сервис приложений Yealink 1. SIP-T22P Количество линий Дисплей Интерфейсы Кнопки Фичи 3 линии, поддержка SIP Графический 132 × 64 ЖК-дисплей Встроенный 2-портовый коммутатор, Поддержка POE 3 программируемых функциональных клавиш, 4 программируемые клавиши, Возможность крепления к стене Отправка SIP SMS, голосовая почта 2. SIP-T28P Количество линий Дисплей Интерфейсы Кнопки Фичи 3 линии, поддержка SIP Графический 320 × 160 ЖК-дисплей Встроенный 2-портовый коммутатор с поддержкой POE 16 программируемых клавиш Встроенная громкая связь, порт для гарнитуры 3. SIP-T38G Количество линий Дисплей Интерфейсы Кнопки Фичи Поддержка SIP, 6 VoIP аккаунтов Графический 4,3 цветной ,ЖК-дисплей 480 х 272 пикселей Встроенный 2-портовый гигабит коммутатор с поддержкой POEE 16 BLF программируемых кнопок, Поддержка до 6 модулей расширения с программируемыми кнопками Встроенная громкая связь, порт для гарнитуры Snom 1. Snom 300 IP Количество линий Дисплей Интерфейсы Кнопки Фичи Поддержка 4 SIP аккаунтов ЖК-дисплей линейный (2 х 16 символов) 2-портовый коммутатор 6 программируемых функциональных клавиш Громкая связь 2. Snom 320 IP Количество линий Дисплей Интерфейсы Кнопки Фичи Поддержка 4 SIP аккаунтов ЖК-дисплей линейный (2 х 16 символов 2-портовый коммутатор с поддержкой POE 12 программируемых функциональных клавиш Встроенная громкая связь, порт для гарнитуры $dbName_ecom = "to-www_ecom"; $GoodID = "7111349514"; mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение "); mysql_select_db($dbName_ecom) or die(mysql_error()); $query_ecom = "SELECT `model`, `itemimage1`, `price`, `discount`, `url`, `preview115`, `vendor`, `vendorCode` FROM `items` WHERE itemid = '$GoodID';"; $res_ecom=mysql_query($query_ecom) or die(mysql_error()); $row_ecom = mysql_fetch_array($res_ecom); echo 'Кстати, купить '.$row_ecom['vendor'].' '.$row_ecom['vendorCode'].' можно в нашем магазине Merion Shop по ссылке ниже. С настройкой поможем 🔧 Купить '.$row_ecom['model'].''.number_format(intval($row_ecom['price']) * (1 - (intval($row_ecom['discount'])) / 100), 0, ',', ' ').' ₽'; $dbName = "to-www_02"; mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение "); mysql_select_db($dbName) or die(mysql_error()); 3. Snom 370 IP Количество линий Дисплей Интерфейсы Кнопки Фичи Поддержка 12 SIP линий Наклонный 240 х 158 Графический дисплей SIP, 2-портовый коммутатор с поддержкой POE 12+42 программируемых функциональных клавиш Встроенная громкая связь
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59