По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Все, что нужно знать не разработчикам: SDK – это строительные блоки разработки приложений. Если ваша компания занимается тем, что разрабатывает или добавляет функциональные возможности в приложение, то вы, вероятно, слышали, как ваши разработчики используют термин «SDK». SDK (software development kit) – это пакет разработки средств ПО (иногда его называют devkit). Как можно понять из названия, это набор инструментов и инструкций, которые разработчики используют для создания приложений. SDK избавляют разработчиков от необходимости писать каждый банальный фрагмент кода своими руками. Они помогают стандартизировать разработку, что позволяет приложениям без каких-либо затруднений работать на различном оборудовании, операционных системах и совместно с другими приложениями. Итак, какое это вообще имеет для вас значение, если вы не разработчик программного обеспечения? Так как архитектура вашего приложения напрямую связана с его коммерческой ценностью, то, когда вы выбираете то, какие компоненты использовать (например, Stripe или PayPal для платежей), ваш выбор должен быть продиктован SDK. Здесь мы привели краткое описание того, что такое SDK, как они работают и как сравнить их по качеству. Пакет разработки средств ПО (SDK - Software Development Kit): определение и примеры SDK – набор инструментов, который используют разработчики для создания приложений с помощью готовых компонентов, тем самым не утруждая себя тем, чтобы создавать эти компоненты собственноручно. SDK предназначены для работы с определенными операционными системами, оборудованием и языками программирования. А вот вам аналогия из реальной жизни: если вы собираетесь собрать книжную полку, то SDK – это все то, что вы найдете в коробке из IKEA, то есть предварительно собранные детали, инструменты и инструкции, как все это собрать. А чтобы, например, собрать стол без SDK, вам придется пойти в лес, срубить дерево, чтобы у вас был свой пиломатериал, причем использовать для этого придется топор, который вы тоже должны сделать сами. Если, например, вы хотите создать мобильное приложение, то вам нужно загрузить iOS SDK от Apple. Это даст вам доступ к любым инструментам iPhone, которые вам будут нужны для того, чтобы создать приложение, например, подключение к камере, интерфейсу Siri или включение push-уведомлений. Аналогично, если вы хотите внедрить платформу Auth0 в свои мобильные и веб-приложения, то вы должны загрузить iOS SDK, Android SDK и веб-SDK. Что находится в SDK? Практически все SDK содержат несколько основных компонентов: Библиотеки кода. Это исходный код, который разработчики могут подключают, чтобы приложение выполняло те функции, которые им нужно. Программный интерфейс приложения (API - Application programming interface). Они позволяют приложению без проблем подключаться к другим службам (подробнее об этом позже). Интегрированная среда разработки (IDE - Integrated development environment). Это интерфейс, с помощью которого разработчики пишут программы. В него встроен компилятор, который переводит высокоуровневый язык программирования, на котором написан исходный код SDK, на язык более низкого уровня, который можно использовать для сборки приложений. Документация. Это инструкции для разработчиков, в которых описано, как нужно использовать код. Понятная и подробная документация – важный критерий хорошего SDK. Отладчик. Отладка автоматически исправляет мелкие ошибки, упрощая тем самым процесс разработки приложения. Примеры кода. Они помогают разработчикам начать работу. Это примеры кода в действии, которые показывают, как их можно использовать. Некоторые SDK также содержат учебные руководства и другие инструментальные средства поддержки. Виды SDK Для создания большинства приложений используются самые различные SDK. Некоторые из этих SDK оптимизируют приложение для конкретного устройства или операционной системы, а некоторые позволяют разработчикам добавлять различные инструменты. SDK с точки зрения аппаратных средств: SDK предназначены не только для мобильных и веб-приложений; они также используются для программирования Интернета вещей (IoT). Поэтому, если вы покупаете, например, набор солнечных батарей, то поставщик оборудования может включить в поставку SDK, чтобы разработчики могли запрограммировать их так, как им нужно. Операционная система мобильного устройства: как мы уже говорили, для того, чтобы разработать приложение, которое бы работало как на Android, так и на Apple необходимы SDK для каждой ОС. Язык программирования для веб-приложений: разработчикам требуются SDK, которые позволяют создавать веб-приложения на том языке программирования, который они выбрали, например, Python, Ruby, JavaScript или PHP. SDK с открытым исходным кодом: это бесплатные SDK, и разработчики могут их модифицировать как сочтут нужным. Это может быть, как преимуществом, когда дело доходит до настройки, так и недостатком, когда возникают риски для безопасности. Проприетарные SDK: в отличие от SDK с открытым исходным кодом, для проприетарных, или коммерческих, SDK нужна лицензия на использование, и к тому же разработчики не могут менять его исходный код. SDK vs API Различие между SDK и API может легко запутать вас, однако оно одновременно и очень простое, и очень важное. API – это фрагменты кода, которые взаимодействуют между двумя частями программного обеспечения. Таким образом, если вы создаете приложение для совместных поездок, то вам нужны API, которые бы соединяли его с телефоном пользователя и, соответственно, возможностью обмена сообщениями, платежной платформой и GPS. Все эти элементы могут находиться в разных серверных частях, но API позволяет им взаимодействовать друг другом и обеспечивает беспроблемное взаимодействие с пользователем. Большинство SDK содержат API, поэтому разработчики могут создавать приложения, которые подразумевают возможность подключения и взаимодействия. Без API подключение приложений чем-то похоже на знаменитую сцену из «Аполлона-13». Но все не так просто, так как вы можете использовать API и без SDK. А в некоторых случаях разработчикам приходится выбирать между SDK и API, чтобы можно было произвести интеграцию с конкретной службой. Преимущество SDK заключается в том, что его проще и быстрее интегрировать (как стол из IKEA – большая часть работы уже сделана за вас). Преимущество API в том, что он более компактный (то есть не содержит библиотек кода для ненужных вам функций) и дает больше возможностей для индивидуальной настройки (если вы мастерите свой собственный стол, то вы можете спроектировать его так, как вам нужно, - любого размера, который вам нужен). Составляющие хорошего SDK Если вы создаете приложение, то, скорее всего, для таких функций, как оплата, обмен сообщениями или аутентификация, вы будете использовать SDK. Разработчикам крайне сложно дается создание этих компонентов, и любые ошибки могут повлечь за собой серьезные проблемы с безопасностью. При выборе поставщика для этих услуг, вы можете сравнивать цены и функции, но также вы должны обратить внимание на их SDK. Вот что должно быть в хорошем SDK: Легковесность: вам нужен SDK, который бы выполнял все необходимые функции с минимальным количеством кода. В противном случае мобильное приложение может занимать слишком много места на телефоне пользователя и работать медленнее, чем нужно. Когда вы перестраиваете устаревшее приложение, то стоит посмотреть, сколько кода используют ваши существующие решения и задаться вопросом, а не упростит ли их SDK. Хорошая документация: представим: два практически идентичных SDK. Однако, если у одного есть подробная документация о том, как его использовать, а второй оставляет разработчиков разбираться с этим самостоятельно, то навряд ли их можно считать равными. Индивидуальная настройка: некоторые SDK настраивать нельзя, то есть вы можете использовать их только такими, какие они есть. Это становится проблемой, когда разработчики решают, что хотят настроить продукт под свои уникальные потребности или добавить фирменное оформление или графику. Безопасность: очень важно использовать SDK только из надежных источников, чтобы исключить возможность того, что вы нечаянно добавите вредоносный или иной нежелательный код в приложение. Из отчета SafeDK: «58% проверенных приложений все еще используют, как минимум, один SDK, который обращается к личным данным пользователя». В эпоху законов о конфиденциальности данных это может привести к тому, что ваше приложение может нажить себе юридических неприятностей. Простота использования: хороший SDK должен предоставлять учебные руководства и примеры кода, а также давать разработчикам возможность обращаться к надежному сообществу или службам поддержки при возникновении каких-либо проблем. SDK: не просто еще одна аббревиатура, которая сбивает с толку Любая компания, которая создает новые приложения или добавляет новые функции в уже существующие, будет использовать SDK как часть процесса разработки. Но SDK – это не просто загадочные концепции программирования; они напрямую влияют на безопасность приложения, его индивидуальную настройку и срок до выпуска на рынок. Если вы не разработчик, то вам необязательно разбираться во всех тонкостях данной темы, но вы должны уметь задавать правильные вопросы.
img
Маленькая, но полезная заметка. Однажда, в один прекрасный день у нас перестала работать подмапленная в web - доступ директория (смонтирована она была через /etc/fstab). Браузер возвращал 403 Forbidden Error. Не долго думая, смотрим, что происходит в логах при обращении к web. В режиме реального времени можно посмотреть командой: tail -f /var/log/httpd/error_log Итак, у нас там было следующее: AH01276: Cannot serve directory /var/www/html/merion_directory/: No matching DirectoryIndex (index.html,index.php) found, and server-generated directory index forbidden by Options directive Хм. Дело в том, что у нас там просто выводится список папок, по файлам. Следовательно, сервак просто не может отрисовать эту структуру. Погнали исправлять Воркэраунд Лезем в конфигурационный файл нашего Apache: vim /etc/httpd/conf/httpd.conf И в общей области, где идут настройки директорий добавляем следующее: <Directory "/var/www/html/merion_directory"> Options Indexes FollowSymLinks </Directory> Где merion_directory - ваша директория в корне веб - сервера /var/www/html/, при обращении к которой вы получаете 403. Конфигурация проста - мы просто говорим апачу, что у нас там каталог файлов и его нужно "отрисовать" даже несмотря на то, что у нас там нет никаких index.html или index.php. По окончанию настройки ребуетаем Apache: service httpd restart Или через systemctl. Ребутаем браузер (Ctrl + F5). Профит!
img
В этой статье мы рассмотрим настройку BGP-оповещения для Network Layer Reachability Information (NLRI), а также конфигурацию политики маршрутизации BGP. Предыдущие статьи цикла про BGP: Основы протокола BGP Построение маршрута протоколом BGP Формирование соседства в BGP Видео: Основы BGP за 7 минут Оповещения NLRI Прежде чем мы начнем настраивать оповещения NLRI, используя различные команды, давайте сначала обсудим старую функцию BGP, которую Cisco отключает по умолчанию. Эта функция называется синхронизацией BGP. Для проверки того, что Cisco отключила эту функцию на вашем устройстве, выполните команду show running-configuration на одном из устройств BGP, и в выводимой информации, под пунктом «процессы» BGP, вы увидите сообщение no synchronization. Если эта функция включена, функция синхронизации не позволяет спикеру BGP вводить префиксы в BGP, если нет коррелированной записи для префикса в базовом IGP (или статических маршрутах). Это помогает предотвратить ситуации типа "черная дыра" (black hole), когда устройства на маршруте не работают с BGP и не могут переадресовать префикс BGP, потому что у них нет маршрута к этому префиксу из их IGP. Эта функция отключена по умолчанию из-за создания множества различных механизмов масштабируемости, существующих в BGP, которые позволяют настроить топологию iBGP без требования полной сетки одноранговых узлов iBGP. Еще одна причина, по которой он отключен, заключается в том, что он поощряет перераспределение префиксов BGP в базовый IGP, и это не безопасно. Существует причина, по которой Cisco уходит от использования команды network для настройки IGPs в CLI. Не очень хорошая идея в программировании, чтобы одна команда выполняла очень разные вещи, и когда она используется в разных областях. Это относится и к команде network. При использовании в IGP команда включает протокол на интерфейсе (а также влияете на то, какие префиксы объявляются), но в BGP у команды network другое назначение. Она не включает BGP на определенных интерфейсах, вместо этого она объявляет префикс, который существует (каким-то образом) на локальном устройстве, и вводит его в BGP. Хотя префикс, который вы могли бы объявить в BGP, чаще всего встречается в вашем IGPs в таблице маршрутизации. Вы можете использовать другие методы для создания префикса для оповещения. Например, вы можете создать интерфейс обратной связи, который обладает префиксом сети, который вы хотите объявить. Или вы можете создать статический маршрут или даже статический маршрут, указывающий на Null0. Одна маленькая хитрость, связанная с командой network в BGP, заключается в том, что, если ваша маска подсети для вашего префикса не находится на классовой границе IP- адреса (например, 10.0.0.0/8), то вам нужно не забыть использовать ключевое слово mask и указать правильную маску при использовании команды. Пример 1 показывает создание двух петлевых интерфейсов и объявление их префиксов в BGP. Обратите внимание, что этот пример также показывает проверку этих префиксных объявлений на маршрутизаторе ATL. Пример 1: Использование команды Network в BGP TPA1#conf t Enter configuration commands, one per line. End with CNTL/Z. TPA1(config)#interface loopback 192 TPA1(config-if)#ip address 192.168.1.1 255.255.255.0 TPA1(config-if)#exit TPA1(config)#interface loopback 172 TPA1(config-if)#ip address 172.16.10.1 255.255.255.0 TPA1(config-if)#exit TPA1(config)router bgp 100 TPA1(config-router)#network 192.168.1.0 TPA1(config-router)#network 172.16.10.0 mask 255.255.255.0 TPA1(config-router)#end TPA1# ATL# ATL#show ip bgp Хотя команда network проста и удобна, она не была бы эффективной, если бы у вас было много префиксов для оповещения. Другой вариант- перераспределить префиксы в BGP из IGP или статических маршрутов. Пример 2 демонстрирует перераспределение префиксов, которые были получены через EIGRP, в BGP. Обратите внимание при проверке, что исходный код для этих префиксов отображается как (?) указывает на неизвестность. Пример 2: перераспределение префиксов в BGP TPA1#configure terminal Enter configuration commands, one per line. End with CNTL/Z. TPA1(config)router bgp 100 TPA1(config-router)#redistribute eigrp 100 TPA1(config-router)#end TPA1# ATL#show ip bgp Когда вы начинаете объявлять (оповещать) NLRI в BGP, вы можете столкнуться с префиксами в вашей таблице BGP (показанной с show ip bgp), которые имеют код состояния (r) вместо ожидаемого допустимого кода состояния (*). Код состояния (r) указывает на сбой RIB, означающий, что BGP попытался поместить префикс в таблицу BGP, но не смог из- за какой-то проблемы. Наиболее распространенной причиной отказа RIB является административное расстояние (AD). Например, IBGP узнал префиксы несущие ужасные объявления AD из 200. Это означает, что если ваш маршрутизатор получил префикс через IGP (даже такой плохой, как RIP с AD 120), то он будет предпочтительнее префикса IBGP. В результате протокол BGP получивший это объявление AD, не отметит префикс как действующий. Обратите внимание, что это, как правило, не происходит с префиксами EBGP-learned, поскольку они имеют очень предпочтительное объявление 20 (по умолчанию). Очень часто, если желательно иметь префикс в IGP и BGP, администраторы будут манипулировать значениями AD на своих маршрутизаторах, чтобы улучшить AD IBGP. Например, в случае RIP и BGP администратор мог бы установить AD изученных маршрутов IBGP на 119, чтобы сделать их предпочтительными по сравнению с используемым IGP. В дополнение к выявлению сбоев RIB в результатах команды show ip bgp, вы можете использовать более прямую команду show ip bgp rib-failure, чтобы увидеть любые префиксы в этом состоянии. Это особенно полезно в случае массивных таблиц BGP. Настройка политики маршрутизации BGP Довольно часто встречаются топологии, в которых вы явно не хотите объявлять префиксы в своей таблице BGP, или вы не хотите получать определенные префиксы от узла BGP. К счастью, в вашем распоряжении есть много инструментов для этого. Например, вот только некоторые методы, которые вы могли бы использовать для фильтрации префиксов: Distribute lists Extended ACLs Prefix lists AS Path filters Route maps Пример 3 демонстрирует один из методов фильтрации. Выбран подход route map, потому что все (и это правильно) любят карты маршрутов. Пример 3: Использование route map в качестве префиксного фильтра в BGP ATL# configure terminal Enter configuration commands, one per line. End with CNTL/Z. ATL(config)#ip access-list standard MYPREFIX ATL(config-std-nacl)#permit 192.168.1.0 0.0.0.255 ATL(config-std-nacl)#exit ATL(config)#route-map MYMAP deny 10 ATL(config-route-map)#match ip address MYPREFIX ATL(config-route-map)#exit ATL(config)#route-map MYMAP permit 20 ATL(config-route-map)#exit ATL(config)#router bqp 200 ATL(config-router)#neighbor 10.10.10.1 route-map MYMAP in ATL(config-router)#end ATL# ATL# clear ip bqp * soft ATL# show ip bqp Обратите внимание, перед проверкой я запускаю команду clear ip bgp * soft. Это гарантирует, что устройство сразу же обновит информацию BGP для меня, так что мне не придется ждать истечения таймера, когда дело дойдет до конвергенции BGP на новых манипуляциях с политикой, которые мы сделали. Помните, что BGP использует множество различных атрибутов пути вместо простой метрики, чтобы предоставить вам возможность легко настроить способ, по которому происходит маршрутизация. Ниже приведены некоторые из атрибутов пути, которыми вы могли бы манипулировать, чтобы настроить политику: Weight MED Local Preference AS Path Можно спросить себя, как AS Path могут быть использованы в целях маршрутизации. Поскольку манипуляция AS Path часто выполняется с помощью AS Path Prepending. Вы отравляете префикс, добавляя свой собственный номер AS к пути, чтобы сделать более длинным (менее предпочтительным) AS Path. Как и большинство наших манипуляций с атрибутом пути, это легко сделать с помощью карты маршрута. Давайте рассмотрим пример использования Local Preference для манипулирования политикой. Мы часто используем Local Preference, чтобы повлиять на то, как мы будем направлять исходящий трафик к префиксу BGP. Мы делаем это, устанавливая значения Local Preference, входящие по нескольким путям. Прежде чем мы начнем, поймите, что Local Preference - это значение, которое рассматривается довольно высоко в процессе принятия решения о наилучшем пути BGP, более высокое значение предпочтительно, и значения передаются только в обновлениях IBGP. Именно так имя LOCAL вошло в название Local Preference. Для начала я объявил тот же префикс в AS 200 (ATL и ATL2) от маршрутизаторов TPA1 и TPA2 AS 100. Глядя на пример 4, Вы можете видеть, что этот префикс (192.168.1.0) может быть достигнут с помощью следующего прыжка 10.10.10.1 и что это предпочтительный путь. Альтернативный путь, который будет использоваться в случае неудачи этого пути, будет проходить через следующий переход 10.21.21.1. Пример 4: Подготовка к использованию Local Preference ATL# show ip bqp Теперь пришло время поэкспериментировать и изменить данное поведение с помощью примера манипуляции атрибутом пути. Мой подход будет состоять в том, чтобы определить префикс, которым мы хотим манипулировать (192.168.1.0), и поднять значение локального предпочтения, чтобы оно было больше, чем значение по умолчанию 100 для пути к TPA2 на следующем прыжке 10.21.21.1. Я делаю это, манипулируя префиксом, когда он входит через путь 10.21.21.1 . Пример 5 показывает эту конфигурацию. ATL# configure terminal Enter configuration commands, one per line. End with CNTL/Z. ATL(config)#ip access-list standard OURPREFIX ATL(config-std-nacl)#permit 192.168.1.0 0.0.0.255 ATL(config-std-nacl)#exit ATL(config)#route-map SETLOCALPREF permit 10 ATL(config-route-map)#match ip address OURPREFIX ATL(config-route-map)#set local-preference 110 ATL(config-route-map)#exit ATL(config)#route-map SETLOCALPREF permit 20 ATL(config-route-map)#exit ATL(config)#router bqp 200 ATL(config-router)#neighbor 10.21.21.1 route-map SETLOCALPREF in ATL(config-router)#end ATL# ATL# clear ip bqp * soft ATL# show ip bqp Обратите внимание, что предпочтительный путь теперь проходит через следующий переход 10.21.21.1, как мы и хотели. Для этого префикса также отображается значение Local Preference - 110. Это более высокое значение является предпочтительным и изменяет выбор, сделанный процессом выбора наилучшего пути BGP.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59