настроить: iosappv2 [App47]

  1. Требуемые шаги:
  2. Загрузите встроенный агент
  3. Описание файлов
  4. Включите встроенную библиотеку агентов в свой проект
  5. Контрольный список файлов
  6. Библиотека App47
  7. Библиотека инструментов Google
  8. Настройте встроенный агент
  9. Добавьте файл EmbeddedAgentSettings.plist для установки дополнительных параметров конфигурации
  10. Отправка кэшированных данных
  11. Добавить Crash Log Management
  12. Ручной захват
  13. Захват GTM
  14. Добавление операторов регистрации в ваше приложение
  15. Добавление синхронизированных событий в ваше приложение
  16. Добавление общих событий в ваше приложение
  17. Использование групп конфигурации в вашем приложении
  18. Отправка кэшированных данных

Загрузите встроенный агент iOS, установите и настройте его в своем мобильном приложении для iOS.

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

Встроенный агент - это мост между вашим мобильным приложением и службой App47. Он предоставляет простой в использовании API для записи времени и продолжительности сеансов, сообщений журнала и событий производительности. После того, как вы добавили свое приложение iOS на панель мониторинга App47, обязательно запишите идентификатор приложения, так как он будет использоваться для настройки агента после установки.

Требуемые шаги:

Необязательные шаги:

  • Добавьте файл EmbeddedAgentSettings.plist для установки дополнительных параметров конфигурации

  • Добавить Crash Log Management

  • Добавьте операторы журналирования, чтобы зафиксировать условия отладки и ошибок

  • Добавить синхронизированные события для сбора данных о производительности

  • Добавьте общие события для захвата поведения пользователя

  • Использование групп конфигурации

Загрузите встроенный агент

Загрузите сжатый образ встроенного агента (файл DMG) из: Ресурсный центр App47

Как только вы загрузили файл, откройте файл DMG, и вы должны увидеть следующие файлы:

Как только вы загрузили файл, откройте файл DMG, и вы должны увидеть следующие файлы:

Описание файлов

Описание файла Обязательно? EmbeddedAgent.h Заголовочный файл для встроенного агента Да EmbeddedAgentSettings.plist Дополнительные параметры для настройки встроенного агента. Нет GoogleToolbox Необходимые файлы из проекта с открытым исходным кодом Google Toolbox для поддержки записи журналов сбоев. Да, если используется UncaughExceptionHandler и GoogleToolbox еще не включен в проект. JSON (требуется для версий агента ниже 1.9) Библиотека SBJSON, используемая для обмена сообщениями с сервисом. Да, если библиотека SBJSON еще не включена в ваш проект. libEmbeddedAgent.a Скомпилированная библиотека встроенного агента (i386, armv6, armv7, armv7s). Эта библиотека использует генератор UUID для создания уникального идентификатора для каждого экземпляра приложения, используйте его при развертывании через iTunes App Store. Да, если вы хотите, чтобы информация о географическом местоположении отправлялась встроенным агентом. CoreLocation.framework должен быть включен в ваш проект. libEmbeddedAgentWithNo CoreLocation.a Скомпилированная толстая (i386, armv6, armv7, armv7s) библиотека встроенного агента без CoreLocation.Framework. Эта библиотека использует генератор UUID для создания уникального идентификатора для каждого экземпляра приложения, используйте его при развертывании через iTunes App Store. Да, если вам не нужна информация о географическом местоположении. libGMStackStrace.a Скомпилированная жирная (i386, armv6, armv7, armv7s) библиотека Google Stack Trace Toolkit, включите эту библиотеку, если вы работаете в проекте, настроенном для ARC. Да, только если вы работаете в проекте, настроенном для ARC, и у вас еще нет включенного набора инструментов Google.

Включите встроенную библиотеку агентов в свой проект

Создайте папку в своем проекте и скопируйте содержимое файла DMG во вновь созданную папку

Добавьте эти файлы в свой проект, щелкнув правой кнопкой мыши по проекту или в папке по вашему выбору.

Примечание. Скопируйте в этот каталог файл libEmbeddedAgent.a или libEmbeddedAgentWithNoCoreLocation.a.

a

Directory Выберите каталог App47 и нажмите « Добавить» .

Directory Выберите каталог App47 и нажмите « Добавить»

Примечание. Если вы уже используете в своем приложении библиотеку SBJSON или GoogleToolbox, не включайте эти каталоги.

Контрольный список файлов

Есть несколько способов включить App47 в ваше приложение iOS, пожалуйста, убедитесь, что вы выбрали только один вариант в каждой группе ниже.

Библиотека App47

Выберите только одну из библиотек libEmbeddedAgent, выбор более одной приведет к ошибкам компиляции.

  • libEmbeddedAgent.a - используйте это, если вы просматриваете iTunes и хотите получить данные GEO.

  • libEmbeddedAgentWithNoCoreLocation.a - используйте этот параметр, если вы используете iTunes и НЕ хотите данных GEO.

Библиотека инструментов Google

Включите либо каталог GoogleToolbox, либо файл libGMStackTrace.a, но не оба вместе.

Если у вас есть проект ARC и вы используете каталог GoogleToolbox, убедитесь, что вы исключили файлы из компилятора ARC. прочитайте эту статью о том, как это сделать, исключить их.

Если вы используете файл libGMStackTrace.a, включите флаг -all_load в флаг компоновщика.

Настройте встроенный агент

Самый простой способ настроить встроенный агент - включить файл «EmbeddedAgent.h» и использовать селектор configureAgentWithAppID: с идентификатором приложения, полученным из панели мониторинга App47. Эта конфигурация будет записывать начало сеанса, продолжительность, местоположение и захватывать соответствующее устройство и информацию о приложении.

#import "MyAppAppDelegate.h" #import "MyAppViewController.h" #import "EmbeddedAgent.h" @implementation MyAppAppDelegate @synthesize window = _window; @synthesize viewController = _viewController; - (BOOL) приложение: (UIApplication *) приложение didFinishLaunchingWithOptions: (NSDictionary *) launchOptions {// Точка переопределения для настройки после запуска приложения. [EmbeddedAgent configureAgentWithAppID: @ "4d556ab4530a69fb4b000002"]; self.window.rootViewController = self.viewController; [self.window makeKeyAndVisible]; вернуть ДА; }

Добавьте файл EmbeddedAgentSettings.plist для установки дополнительных параметров конфигурации

Агент также можно настроить с помощью включенного файла EmbeddedAgentSettings.plist, который содержит идентификатор приложения, а также дополнительные параметры для встроенного агента.

Параметры конфигурации

Имя Тип Описание По умолчанию Обязательно? application id String Идентификатор приложения, указанный на вашей панели управления. Нет Да Частота обновления конфигурации Число Количество дней, в течение которых агент должен обновлять свою конфигурацию с помощью службы. Значение 0,5 приведет к тому, что агент будет обновлять свою конфигурацию каждые 12 часов. 1 Интервал загрузки данных без задержки Число Число секунд, которое следует ждать после запуска, прежде чем отправлять данные в службу. Это позволяет вашему приложению запускаться и реагировать, не конкурируя за ценные ресурсы процессора и сети. 1 Не отправлять фактический идентификатор устройства Boolean Больше не используется, пожалуйста, удалите из файла plist. НЕТ Не показывать активность сети Boolean Если при отправке данных в службу должен быть включен индикатор сети в строке состояния. Если для этого значения установлено значение YES, индикатор сетевой активности включается и выключается при отправке данных, в противном случае индикатор не обновляется при отправке данных. ДА Нет конечной точки конфигурации String Полный URL-адрес конечной точки конфигурации для службы API. Производственный API-сервер App47 Нет уровня ведения журнала агента Строка Уровень ведения журнала для агента. Он будет регистрировать информацию только при запуске в симуляторе, а не на устройстве. Допустимые значения: «отладка», «информация», «предупреждение», «ошибка». error Нет отправлять события немедленно Boolean Если общие и синхронизированные события должны быть отправлены немедленно или объединены вместе и отправлены в начале следующего сеанса, такого как данные журнала и сеанса. ДА Нет загрузки при выходе Boolean Попытка загрузки сеанса, журнала и всех оставшихся данных о событиях при выходе. Требуется iOS 4.0. Когда приложение переводится в фоновый режим, агент пытается загрузить свои данные на сервер с помощью фоновой задачи iOS. Нет Нет сбой захвата Boolean Устаревший (см. Параметр «Формат захвата сбоя захвата»): Параметр конфигурации для захвата журналов сбоя через агент, используемый вместо InstallExceptionHandlers, не использует оба метода. Нет Нет Формат сбоя захвата String Настройте агент для захвата сбоя, используя метод «GTM» или «символический». Не записывать журналы сбоев Нет

При использовании EmbeddedAgentSettings.plist необходимо использовать следующий селектор конфигурации.

#import "MyAppAppDelegate.h" #import "MyAppViewController.h" #import "EmbeddedAgent.h" @implementation MyAppAppDelegate @synthesize window = _window; @synthesize viewController = _viewController; - (BOOL) приложение: (UIApplication *) приложение didFinishLaunchingWithOptions: (NSDictionary *) launchOptions {// Точка переопределения для настройки после запуска приложения. [EmbeddedAgent configureAgent]; self.window.rootViewController = self.viewController; [self.window makeKeyAndVisible]; вернуть ДА; }

Отправка кэшированных данных

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

[EmbeddedAgent sendCachedData];

Добавить Crash Log Management

Существует три способа сбора информации в журнале сбоев для приложения iOS. Пожалуйста, выберите один из методов ниже, не реализуйте несколько методов в приложении sam.

Ручной захват

Если вы хотите, чтобы информация из журнала сбоев регистрировалась и отправлялась в службу App47, добавьте следующий обработчик handleUncaughException в ваш делегат приложения. Это будет фиксировать любую информацию о сбоях локально. Информация о сбое будет загружена при следующем запуске приложения. Это будет использовать метод Google Toolkit для записи журналов сбоев.

void handleUncaughtException (NSException * исключение) {EALogCrashException (исключение, @ "Сбой приложения"); } - (BOOL) application: (UIApplication *) application didFinishLaunchingWithOptions: (NSDictionary *) launchOptions {// Точка переопределения для настройки после запуска приложения. [EmbeddedAgent configureAgent]; NSSetUncaughtExceptionHandler (& handleUncaughtException); self.window.rootViewController = self.viewController; [self.window makeKeyAndVisible]; вернуть ДА; }

Захват GTM

Чтобы перехватить все исключения сбоя, используйте метод InstallExceptionHandlers, чтобы зарегистрировать обработчики по умолчанию для необработанных исключений и обработчиков сигналов. Это аналогично настройке «GTM» и «формата сбоя при захвате» в файле EmbeddedAgentSettings.plist.

- (BOOL) приложение: (UIApplication *) приложение didFinishLaunchingWithOptions: (NSDictionary *) launchOptions {// Точка переопределения для настройки после запуска приложения. [EmbeddedAgent configureAgent]; [EmbeddedAgent InstallExceptionHandlers]; self.window.rootViewController = self.viewController; [self.window makeKeyAndVisible]; вернуть ДА; }

Захватить журнал сбоев в формате журнала сбоев iOS и обозначить его службой. Сконфигурируйте файл EmbeddedAgentSettings.plist с настройкой «формат записи при сбое» ⇒ «символизировать».

Это будет использовать PL Crash Reporter Library чтобы зафиксировать сбой локально на устройстве. Журнал сбоев будет загружен на сервер при следующем запуске приложения. Это не побуждает пользователя загружать журнал сбоев.

Если ваш журнал сбоев не полностью символизирован, пожалуйста, смотрите наш поиск неисправностей в символике iOS руководство.

Добавление операторов регистрации в ваше приложение

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

// // MyAppViewController.m // MyApp // // #import "MyAppViewController.h" #import "EmbeddedAgent.h" @implementation MyAppViewController - (void) dealloc {[super dealloc]; } - (void) didReceiveMemoryWarning {// Оператор журнала уровня предупреждения EALogWarn (@ "Предупреждение о получении памяти"); // Освобождает представление, если оно не имеет суперпредставления. [super didReceiveMemoryWarning]; // Освобождаем любые кэшированные данные, изображения и т. Д., Которые не используются. } #pragma mark - View lifecycle // Реализация viewDidLoad для дополнительной настройки после загрузки представления, как правило, из кончика. - (void) viewDidLoad {// Список тегов можно добавить в операторы журнала для дополнительных // критериев поиска в веб-приложении. EALogInfoWithTags ([NSArray arrayWithObject: @ "MyTag"], @ "Представление загружается"); [super viewDidLoad]; } - (void) viewDidUnload {[super viewDidUnload ===== Заголовок 2-го уровня =====]; // Освободить все сохраненные подпредставления основного представления. // например, self.myOutlet = nil; } - (BOOL) shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation {// Все макросы журнала допускают замены стандартного строкового формата // найдены в NSLog и stringWithFormat EALogDebug (@ "Просят, чтобы представление поворачивалось в ориентацию интерфейса% d", interfaceOrientation); // Возвращаем YES для поддерживаемых ориентаций return (interfaceOrientation == UIInterfaceOrientationPortrait); } @конец

Добавление синхронизированных событий в ваше приложение

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

- (void) executeMyTransaction {NSString * eventID = [EmbeddedAgent startTimedEvent: @ "Transaction"]; // Выполнение некоторой бизнес-логики для завершения транзакции //… // [EmbeddedAgent endTimedEvent: eventID]; }

Временные события могут быть очищены перед отправкой в ​​службу с помощью clearTimedEvent: метод или очистить все события с помощью clearTimedEventsOlderThanTimeInterval: метод.

- (void) executeMyTransaction {BOOL успешно = НЕТ; NSString * eventID = [EmbeddedAgent startTimedEvent: @ "Транзакция"]; // Выполнение некоторой бизнес-логики для завершения транзакции //… // if (success) [EmbeddedAgent endTimedEvent: eventID]; еще [EmbeddedAgent clearTimedEvent: eventID]; }

… ИЛИ ЖЕ …

- (void) clearAllTimedEvents {[EmbeddedAgent clearTimedEventsOlderThanTimeInterval: 0]; }

Добавление общих событий в ваше приложение

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

- (void) handleMyEvent {[EmbeddedAgent sendGenericEvent: @ "myEventName"]; // Выполнить некоторую бизнес-логику для обработки события //… //}

Использование групп конфигурации в вашем приложении

Группы конфигурации позволяют установить набор пар значений ключа через основной веб-интерфейс, которые затем загружаются агентом при первоначальном запуске, а затем с частотой, устанавливаемой параметром «частота обновления конфигурации» в файле EmbeddedAgentSettings.plist. Элементы конфигурации должны запрашиваться по имени группы и имени ключа. Может быть задано значение по умолчанию для использования в случае, если группа конфигурации не содержит элемент с запрошенным именем ключа. Если значение по умолчанию не указано, а ключ не существует в группе, возвращается значение nil. Группы конфигурации могут быть назначены агентам на основе версии приложения, версии ОС и платформы.

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

(void) myMethod {NSString * serverURLString = [EmbeddedAgent configurationStringForKey: @ группа «URL-адрес сервера»: @ «Информация о сервере» defaultValue: @ »http://myserver.abc.com/restapi»]; // Используем serverURLString для выполнения дополнительной работы ... //… //}

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

Имя Описание EmbeddedAgentAppConfigurationGroupDidInsert Была добавлена ​​группа конфигурации. Имя группы включается в объект уведомления userInfo с ключом: EmbeddedAgentAppConfigurationGroupNameKey. EmbeddedAgentAppConfigurationGroupDidUpdate Группа конфигурации была обновлена. Имя группы включается в объект уведомления userInfo с ключом: EmbeddedAgentAppConfigurationGroupNameKey. EmbeddedAgentAppConfigurationGroupDidDelete Группа конфигурации была удалена. Имя группы включается в объект уведомления userInfo с ключом: EmbeddedAgentAppConfigurationGroupNameKey. EmbeddedAgentAppConfigurationGroupNameKey Группа конфигурации была изменена, добавлена, обновлена ​​или удалена. (void) updateViewFromConfigurationChange: (NSNotification *) уведомление {NSDictionary * userInfo = [уведомление userInfo]; NSString * groupName = [[userInfo valueForKey: EmbeddedAgentAppConfigurationGroupNameKey]]; // // Обновляем представление на основе groupName // ...} (void) viewDidLoad {[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector (updateViewFromConfigurationChange :) name: EmbeddedAgentAppConfigurationGroupDidUpdate объект: nil]; [super viewDidLoad]; }

Отправка кэшированных данных

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

[EmbeddedAgent sendCachedData];

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

Метрика Описание Задержка измерения при запуске Время, которое требуется агенту для запуска и возврата управления обратно в основной поток. Все остальные операции выполняются в фоновых потоках. Средняя задержка в секундах: iPhone 3g - 0,052, iPhone 4 - 0,017, iPad 2 - 0,026 Память Объем дополнительной памяти, которую агент использует в устойчивом состоянии. Сетевой трафик 116 КБ Хотя конкретный объем сетевого трафика зависит от того, как вы используете службу, большинство пакетов, отправляемых в службу, составляют менее 2 КБ. Размер файла библиотеки менее 2 КБ Чистое увеличение размера изображения вашего приложения в результате включения встроенного агента. 1.3MB

2,4

2,4

2,3

2,0

Вернуться к началу

Похожие

Простые шаги, чтобы сделать GNOME 3 более эффективным
... вызвали такие противоречия, как GNOME 3. Его высмеивали, презирали и ненавидели с момента его первого выпуска. Дело в том, что на самом деле это очень хороший рабочий стол. Он прочный, надежный, стабильный, элегантный, простой ... и с небольшими изменениями и дополнениями его можно превратить в один из самых эффективных и удобных настольных компьютеров на рынке. Конечно, что делает рабочий стол эффективным и / или удобным для пользователя? Это зависит от мнения - то, что есть у каждого.
Почему продвижение страницы в Google так популярно?
Миллионы людей по всему миру используют поиск Google . Каждый день или даже более десятка раз в день они входят в панель вопросов, относящихся к темам, которые их касаются. Пользователи спрашивают о лучших отелях Греции, ценах на топливо на близлежащих АЗС, ищут рестораны, новую обувь или бабушкин подарок. Они спрашивают, какую машину купить, какую школу выбрать и что приготовить на ужин. Поиск Google почти стал руководством. Он заменяет словари, помогает найти самые привлекательные
Поиск в Google через адресную строку Firefox
Хотите изменить поведение по умолчанию в адресной строке Firefox (т. Е. Когда он выполняет поиск)? Прямо сейчас, если вы неправильно наберете веб-адрес, он попытался найти искомый веб-сайт, аналогично функции Google «Мне повезет». Проблема в том, что это не очень полезно для большинства людей - каковы шансы его найти? Подумайте,
Google обновит Chrome до неузнаваемости: главные изменения
Google готовится к выпуску нового обновления Chrome Material Design в следующем месяце. Браузер Chrome будет иметь новый дизайн во всех операционных системах ", - сообщает Google о последних новостей о Chrome. Этот новый дизайн будет входить в версию Chrome 69, который в настоящее время планируется выпустить 4 сентября.
Товарные группы
Нажмите кнопку Добавить . Введите имя , Выберите тип , Введите количество отображаемых продуктов . Нажмите кнопку Сохранить . Изменить язык редактирования, чтобы редактировать запись для других языковые версии
Настройка почтового сервера Fedora Linux
... вленные версии этой книги в формате PDF и ePub для Fedora 13 всего за 9,99 $. PDF / ePub издания содержат 40 глав и более 255 страниц. Электронная почта является одним из основных применений серверов или настольных систем на базе Fedora Linux как в домашней, так и в бизнес-среде. Учитывая
Неверное позиционирование страницы - как не нарушать руководящие принципы Google - SEMTEC
Различные виды санкций были наложены на веб-сайты Google в течение многих лет. Это касается как небольших, так и крупнейших сайтов в сети. В прошлом наказания были нацелены даже на таких гигантов, как Forbes, Ebay и BMW. На польском рынке наказываются три сайта сравнения цен: Skąpiec, Ceneo и Nokaut. Штрафы для веб-сайтов налагаются Google из-за использования различных методов манипулирования результатами поиска. Положение страниц в результатах Google определяется на основе сотен факторов,
Загрузите компьютер с USB, даже если BIOS его не поддерживает • Raymond.CC
... вашего флэш-накопителя USB - добавить его в меню загрузки Windows, поэтому, когда у вас будет возможность выбрать установку Windows при загрузке, у вас также будет запись для загрузки Plop Boot Manager и запуска загрузочный USB. Это не так сложно, как раньше, потому что для входа в меню загрузки вам приходилось редактировать загрузочный файл XP или вручную использовать BCDEdit в Vista или 7. В наши дни это намного проще и требует только выполнение командного файла для вставки
Определение профилей подключения
Определение профилей подключения В разделе Профили подключения вы можете настроить отдельные параметры подключения для каждого сервера Secure Shell, к которому вы подключаетесь. Вы также можете настроить несколько профилей для одного сервера, например, с разными учетными записями пользователей. Чтобы добавить профиль подключения, нажмите « Добавить профиль» на странице « Профили подключения» . Введите имя для профиля
Как установить и настроить Zabbix для безопасного мониторинга удаленных серверов в CentOS 7
Автор выбрал Open Source Initiative получить пожертвование в рамках Пишите для ДОНАЦИЙ программа. Вступление Zabbix это программное обеспечение с открытым исходным кодом для мониторинга сетей и приложений. Он предлагает мониторинг в реальном времени тысяч метрик, собранных с серверов, виртуальных машин, сетевых
Прямая загрузка AutoCAD 2018 Offline Installer [Официальные ссылки]
... вщиками для двухмерного и трехмерного проектирования различных чертежей, таких как компьютерные микросхемы, строительные площадки, автозапчасти и многое другое. Вы можете загрузить AutoCAD 2018 Offline Installer, используя официальные ссылки, приведенные в этом сообщении. Автономный пакет Autodesk AutoCAD 2018 доступен для загрузки как для 32-битной, так и для 64-битной версии Windows. Если вам нужно экономичное программное обеспечение для автоматизированного черчения,

Комментарии

Могу ли я привлечь ваше внимание, пожалуйста?
Могу ли я привлечь ваше внимание, пожалуйста? Статистически говоря ... вероятно нет. Если бы мне пришлось угадывать, 20% людей, которые нажали на эту статью, уже решили, что они должны быть где-то еще. В электронной коммерции это еще хуже. Конечно, кто может обвинить их? Со всем сегодняшним шумом онлайн достаточно сложно привлечь чье-то внимание. Преобразование этого внимания в долгосрочные отношения с клиентами может показаться почти невозможным, особенно когда вы работаете
Хотите протестировать свой сайт WordPress в разных браузерах?
Хотите протестировать свой сайт WordPress в разных браузерах? Кросс-браузерное тестирование чрезвычайно важно при изменении тем WordPress или реализации нового дизайна, поскольку оно помогает вам убедиться, что ваш сайт выглядит хорошо во всех браузерах, экранах, операционных системах и мобильных устройствах. В этой статье мы покажем вам, как легко тестировать сайт WordPress в разных браузерах.
Поддерживает ли Cisco агент на VMware или Shared Drivers?
Поддерживает ли Cisco агент на VMware или Shared Drivers? О. Это то, что поддерживается или не поддерживается агентом NAC на VMware: VMware в режиме NAT Агент NAC не поддерживается независимо от Inband или OOB, потому что в режиме VMware NAT все виртуальные машины отображаются с одинаковыми IP и MAC. Следовательно, вы не можете различить разные виртуальные машины для целей аутентификации / состояния. VMware в режиме
Вы ищете приложение, разработанное?
Вы ищете приложение, разработанное? Вы хотите проверить внешний вид вашего будущего приложения, прежде чем писать одну строчку кода? Наша команда может помочь вам создать отличный прототип приложения, который поможет вам лучше оценить осуществимость идеи вашего проекта и ваш бюджет на разработку программного обеспечения. Узнайте больше о наших Ускоритель Bootcamps здесь! Свяжитесь с нами
С чего началось ваше увлечение физикой?
С чего началось ваше увлечение физикой? В детстве физика мне казалась почти суперсилой, потому что можно делать определенные оценки расстояний или скоростей, пользуясь довольно простыми уравнениями, которые можно считать про себя. Например, вычислить длину нити, имея только часы и монетку. Но серьезно наукой увлекся уже почти в конце школы из-за участия в олимпиадах. Именно при поступлении в университет физика, по сравнению с инженерными специальностями, показалась мне более фундаментальной.

Конечно, что делает рабочий стол эффективным и / или удобным для пользователя?
Почему продвижение страницы в Google так популярно?
Проблема в том, что это не очень полезно для большинства людей - каковы шансы его найти?
Могу ли я привлечь ваше внимание, пожалуйста?
Конечно, кто может обвинить их?
Хотите протестировать свой сайт WordPress в разных браузерах?
Поддерживает ли Cisco агент на VMware или Shared Drivers?
Поддерживает ли Cisco агент на VMware или Shared Drivers?
Вы ищете приложение, разработанное?
Вы хотите проверить внешний вид вашего будущего приложения, прежде чем писать одну строчку кода?